C#中ShowDialog的问题

时间:2017-07-13 16:38:47

标签: c# winforms

我使用showdialog用于显示模态窗口,但我在一些带有Windows XP或Windows 7的计算机上遇到问题,父窗口在显示第二个模态窗口后显示在前面。我的程序是在.NET 4.任何建议吗?

在我的主窗口中,我有一个带代码的按钮:

private void btnBox_Click(object sender, EventArgs e)
{
    frmBox fBox = new frmBox();
    fBox.ShowDialog();
}

我在按钮内部frmBox中的代码是:

private void btnSearch_Click(object sender, EventArgs e)
{
    frmSearch fSearch = new frmSearch();
    fSearch.ShowDialog();
}

1 个答案:

答案 0 :(得分:0)

使用另一个Form作为参数的ShowDialog overload显示对话框。这会将对话框Owner设置为该表单。 Owned forms始终显示在其所有者的顶部。

来自MSDN:

  

当表单由另一个表单拥有时,它将被关闭或隐藏   业主表格。例如,考虑一个名为Form2的表单   一个名为Form1的表单。如果Form1关闭或最小化,Form2也是   关闭或隐藏。 拥有的表单也永远不会显示在他们的后面   所有者表格。

以下代码通常已足够,但您可能需要根据打开对话框的位置修改参数。

someForm.ShowDialog(this);