Я думаю, что логика немного нарушена с переменной _consoleWindowCount
.
Поскольку вы передаете идентификационный номер в конструкторе ConsoleForm, просто добавьте свойство ReadOnly в эту форму, чтобы вы могли использоватьномер идентификатора:
Пример:
public class ConsoleForm : Form {
private int _FormID;
public ConsoleForm(int formID) {
_FormID = formID;
this.Text = "Console #" + _FormID.ToString();
}
public int FormID {
get { return _FormID; }
}
}
Создание новых форм потребует от вас перебора всей дочерней коллекции и поиска доступного идентификатора для создания:
private void tsBtNewConsole_Click(object sender, EventArgs e) {
int nextID = 0;
bool idOK = false;
while (!idOK) {
idOK = true;
nextID++;
foreach (ConsoleForm f in this.MdiChildren.OfType<ConsoleForm>()) {
if (f.FormID == nextID)
idOK = false;
}
}
var consoleForm = new ConsoleForm(nextID);
consoleForm.MdiParent = this;
consoleForm.Show();
}
Вы бы использовали ту же итерацию, чтобы определить, над какой формой вы хотите работать:
private void ShowChildForm(int formID) {
foreach (ConsoleForm f in this.MdiChildren.OfType<ConsoleForm>()) {
if (f.FormID == formID)
f.BringToFront();
}
}