在我的应用程序中,我正在显示一个需要在TopLevel的新表单。
所以,我正在设置
someForm.TopLevel = true;
现在,我有一个复选框,允许用户将其设置为“不是顶级”。
取消选中后,我想设置TopLevel = false
但是当我这样做时,我的表格就消失了。有谁知道为什么?
这是我的代码:
private void stayOnTop_CheckedChanged(object sender, EventArgs e)
{
this.TopLevel = this.stayOnTop.Checked;
}
答案 0 :(得分:2)
由于您的复选框名为stayOnTop
,因此我假设您要设置TopMost
属性而不是TopLevel
。
答案 1 :(得分:0)
设置TopLevel仅在MDI应用程序中有意义 - 其中父表单中包含一个或多个子表单(如用于工作的Word和Excel)。
答案 2 :(得分:0)
TopLevelControl
是您申请的主要形式。通过将TopLevel
设置为false
,TopLevelControl
设置为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;
}
}