C # MDI ребенок не отображается - PullRequest
0 голосов
/ 22 ноября 2011

Я использую метод sice. У меня будет много дочерних форм.Теперь он отображается, когда я вызываю форму нажатием на кнопку, но не после закрытия дочернего входа.

Метод:

private void mForms(Form f)
{
    if (this.MdiChildren.Contains(f)) 
    {
        f.WindowState = FormWindowState.Normal;
    }
    else
    {
        f.MdiParent = this; f.Show();
    }
}

Это просто проверяет, содержит ли MDIcontainer ужезапрошенная форма.Если да, поставьте его снова (если оно свернуто), если нет, покажите его.

Теперь я могу вызывать формы, используя это:

private void ts_bestand_studenten_add_Click(object sender, EventArgs e) 
{ 
    if (add_student.IsDisposed)
    {
        add_student = new add_student();
    }

    mForms(add_student); 
}

Это проверяет, если этоутилизировать уже или нет.Если так, переопределите это.Затем он вызывает метод, чтобы открыть правильную форму.Это работает как надо.

Теперь проблемная часть: после закрытия экрана входа в систему и входа пользователя в систему определяется уровень пользователя.Я должен быть в состоянии открыть другую форму.Это метод, который я использую для этого: (ПРИМЕЧАНИЕ: уровни пользователя работают нормально, так как они достигают окна сообщений)

// Predefines start_screen_admin
Form start_screen_admin = new start_screen_admin();

public void mCommitRights()
{
    if (userlevel.gCheckLevel == 0)
    {
        // Admin, no changes
        MessageBox.Show("Admin");
        mForms(start_screen_admin);
    }
    ... more of the same to check for userlevels
}

Теперь вы думаете, что это должно работать.Мне не нужно переопределять его, потому что он открывается впервые, и он уже предопределен.MessageBox показывает, а форма - нет.Я действительно не вижу проблемы в этом.Я перепробовал все, что мог придумать ..

1 Ответ

0 голосов
/ 22 ноября 2011

Я думаю, вам нужно включить метод Select(), чтобы вывести форму на передний план:

Попробуйте изменить это на:

private void mForms(Form f) {
  if (this.MdiChildren.Contains(f)) {
    f.WindowState = FormWindowState.Normal;
    f.Select();
  } else {
    f.MdiParent = this;
    f.Show();
  }
}
...