ShowDialog()不会使窗口模态

时间:2009-05-29 15:24:12

标签: c# winforms

如果表单加载时满足certian条件,我有一个窗口弹出一个对话框。问题是窗口没有停留在顶部,我仍然可以单击父项上的内容。但是,窗体上有一个按钮,当按下时会打开同一个窗口,当我这样做时,它按预期工作(如对话框窗口)。

首次加载表单时是否存在显示对话框的问题?

4 个答案:

答案 0 :(得分:2)

您是否从Form类调用ShowDialog?因为它只会在从另一个Form调用时设置父窗口。或者,您可以使用具有IWin32Window参数的重载来专门设置所有者。

答案 1 :(得分:0)

你能否进一步解释这个问题,因为这是我的代码,在对话框关闭之前,它没有显示自己的形式,无论你是否设置了父级

  private void Form1_Load(object sender, EventArgs e)
        {
            //your functionality goes here    
            AboutBox1 box = new AboutBox1();
            box.ShowDialog();
        }
    }

另一方面,您还可以查看TopMost属性

答案 2 :(得分:0)

需要从您希望成为其父/所有者的表单中调用ShowDialog方法,以使其成为该表单的模态。或者我相信你可以直接设置对话框的所有者,但我从来不需要这样做。

答案 3 :(得分:0)

DaBomb,

要执行您想要的操作,您必须从主窗体的构造函数调用模式对话框,而不是从Form_Load事件调用。

这样的事情:

    public Form1()
    {
        InitializeComponent();
        this.Show();
        Form2 popupForm = new Form2();
        popupForm.ShowDialog();
    }