重置Form的TopLevel属性时,表单消失

时间:2015-02-13 12:58:46

标签: c# winforms

在我的应用程序中,我正在显示一个需要在TopLevel的新表单。

所以,我正在设置

someForm.TopLevel = true;

现在,我有一个复选框,允许用户将其设置为“不是顶级”。 取消选中后,我想设置TopLevel = false

但是当我这样做时,我的表格就消失了。有谁知道为什么?

这是我的代码:

private void stayOnTop_CheckedChanged(object sender, EventArgs e)
{
    this.TopLevel = this.stayOnTop.Checked;
}

4 个答案:

答案 0 :(得分:2)

由于您的复选框名为stayOnTop,因此我假设您要设置TopMost属性而不是TopLevel

答案 1 :(得分:0)

设置TopLevel仅在MDI应用程序中有意义 - 其中父表单中包含一个或多个子表单(如用于工作的Word和Excel)。

答案 2 :(得分:0)

TopLevelControl是您申请的主要形式。通过将TopLevel设置为falseTopLevelControl设置为null。在这种情况下,没有为您的应用程序显示的主要表单。如果您添加一个将其切换回true的计时器,您将看到它再次出现。 (虽然没有防止机制,但很有意思。例如,不可能将顶级表单添加到另一个顶级表单。但是你可以完全摆脱顶级表单。)

这就是它消失的原因。如果您希望它只发送到后台,您可以使用SendToBack()方法。它将改变表格的Z-index。因此,如果控件后面有一个窗口,控件将移动到窗口后面。

答案 3 :(得分:0)

试试这些代码:

 private void stayOnTop_CheckedChanged(object sender, EventArgs e)
{
    if(e.checked == true)
  {
    someForm.TopLevel = false; 
  }
  else
  {
    someForm.TopLevel = true;
  }    
}