Почему дочерняя форма MDI не отображается при вставке текстового поля C# - PullRequest
1 голос
/ 06 мая 2020

Я создал Form1, а дочерняя форма MDI - Form2. Состояние окна Form2 увеличено в родительской форме.

My Some Code:

bool IsOpen = false;
foreach (Form f in Application.OpenForms)
{
    if (f.Text == "Manage Model")
    {
        IsOpen = true;
        f.Focus();
        break;
    }
}

if (IsOpen == false)
{
    var fmodel = new formModel();
    fmodel.MdiParent = this;
    fmodel.WindowState = FormWindowState.Minimized;
    fmodel.Show();
    fmodel.WindowState = FormWindowState.Maximized;
}

// Close another forms
foreach (Form frm in this.MdiChildren)
{
    if (!frm.Focused)
    {
        frm.Visible = false;
        frm.Dispose();
    }
}

Form2 пуста Я попробовал щелкнуть меню программы, чтобы открыть Form2. Оно успешно отображается.

Я вставил label1 в Form2 и открыл Form2. Он успешно отображается.

но когда я вставил textbox1 или button1 в Form2 и открыл Form2, он не отображается. Это просто мигает.

Run the program

Кто мне скажет, почему это так? Спасибо.

1 Ответ

0 голосов
/ 06 мая 2020

Это неверно:

f.Focus();

и вот так:

if (!frm.Focused)
{
    frm.Visible = false;
    frm.Dispose();
}

Они должны быть:

f.Activate();

и:

if (frm != ActiveMdiChild)
{
    frm.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...