Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#MDI子级未显示_C#_Winforms_Mdi - Fatal编程技术网

C#MDI子级未显示

C#MDI子级未显示,c#,winforms,mdi,C#,Winforms,Mdi,我正在使用一种方法,因为我将有很多子窗体。现在,当我通过单击按钮调用表单时,它确实会显示出来,但在登录子项关闭后不会显示 方法: private void mForms(Form f) { if (this.MdiChildren.Contains(f)) { f.WindowState = FormWindowState.Normal; } else { f.MdiParent = this; f.Show();

我正在使用一种方法,因为我将有很多子窗体。现在,当我通过单击按钮调用表单时,它确实会显示出来,但在登录子项关闭后不会显示

方法:

private void mForms(Form f)
{
    if (this.MdiChildren.Contains(f)) 
    {
        f.WindowState = FormWindowState.Normal;
    }
    else
    {
        f.MdiParent = this; f.Show();
    }
}
这只是检查MDI容器是否已经包含请求的表单。如果是,将其重新放回(以防最小化),如果不是,则显示它

现在我可以使用以下命令调用表单:

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

    mForms(add_student); 
}
这将检查它是否已被处置。如果是,请重新定义它。然后调用该方法打开正确的表单。这是应该的

现在有问题的部分是: 关闭登录屏幕并登录用户后,将定义userlevel。我应该可以打开另一张表格。这就是我使用的方法:(注意:userlevels工作正常,因为它确实到达了Messagebox)


现在你认为这应该行得通。我不必重新定义它,因为它是第一次打开,并且已经预定义。消息框显示,但表单不显示。我真的看不出这有什么问题。我尝试了所有我能想到的方法。

我认为您需要包括
Select()
方法来将表单放在前面:

尝试将其更改为:

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

没有区别。正如我在帖子中所说:调用表单的方法与其他表单完美配合。当我在登录关闭时调用它时,它不会显示,甚至不会最小化。@Rune我无法复制它。您没有在创建的位置显示代码
start\u screen\u admin
——可能是问题所在。另外,尽量避免调试MessageBox——它可能会干扰GUI。@Lars_Tech我在帖子中添加了它。我使用这个:Form start\u screen\u admin=new start\u screen\u admin()@你能在没有mForms方法的情况下显示start\u screen\u admin吗?如果问题只发生在该窗体上,那么请检查属性、构造函数方法以及该窗体上可能存在干扰的任何事件。我找不到发布的代码有任何错误。@Lars_Tech我查看了表单的设计器部分>无。它可以显示为普通表单或对话框,但作为普通表单,它会立即跳转到MDI容器后面。我想这可能是问题所在,但我不知道为什么。
private void mForms(Form f) {
  if (this.MdiChildren.Contains(f)) {
    f.WindowState = FormWindowState.Normal;
    f.Select();
  } else {
    f.MdiParent = this;
    f.Show();
  }
}