我正在使用一种方法,我会有很多子形式。现在,当我通过点击按钮调用表单时,它会显示,但不会在登录子项关闭后调用。
方法:
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);
}
检查是否已经处理掉。如果是这样,重新定义它。然后它调用方法打开正确的表单。这样可以正常工作。
现在有问题的部分: 登录屏幕关闭并且用户登录后,将定义用户级别。我应该能够打开另一个表格。这是我使用的方法:(注意:用户级别工作正常,因为它确实到达了Messagebox)
// 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显示,但表单没有。我真的看不出这个问题。我尝试了我能想到的一切......
答案 0 :(得分:0)
我认为您需要使用Select()
方法将表单放在前面:
尝试将其更改为:
private void mForms(Form f) {
if (this.MdiChildren.Contains(f)) {
f.WindowState = FormWindowState.Normal;
f.Select();
} else {
f.MdiParent = this;
f.Show();
}
}