0
我正在使用一種方法,我會有很多孩子的形式。現在,當我通過單擊按鈕來調用表單時,它會顯示,但在登錄子進程關閉後不會顯示。C#MDI孩子沒有顯示
方法:
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);
}
此檢查它是否已經或不配置。如果是的話,重新定義它。然後它調用該方法來打開正確的表單。這工作,因爲它應該。
現在問題部分: 登錄屏幕關閉並且用戶登錄後,定義了用戶級別。我應該可以打開另一個表格。這是我用的方法:(注:userlevels做工精細,因爲它確實達到了消息框)
// 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顯示,但表單不顯示。我真的無法看到這個問題。我什麼都試過了我能想到的..
沒有區別。就像我在文章中說過的那樣:調用表單的方法與其他表單完美匹配。當我在登錄被關閉時調用它時,它不會顯示,甚至不會最小化。 –
@Rune我無法複製它。你沒有在你創建'start_screen_admin'的地方顯示代碼 - 也許問題出在那裏。另外,儘量避免使用MessageBoxes進行調試 - 它可能會干擾GUI。 – LarsTech
@Lars_Tech我將它添加到帖子中。我使用這個: 窗體start_screen_admin = new start_screen_admin(); –