C#WinForms - 打开子窗体时无法访问主窗体

时间:2010-06-04 08:55:45

标签: c# winforms

方案

我有一个带有主窗体的C#WinForms应用程序。我在这个主窗体上也有一个按钮,当单击它时,会创建并显示一个新窗体。

问题......

...当新表单打开时,我无法点击主表单上的任何内容。

问题

我该如何解决这个问题?是否可以同时使用这两种形式?

启动新表格的代码

    private void barBtnStatsMonitor_ItemClick(object sender,   DevExpress.XtraBars.ItemClickEventArgs e)
    {
        //XtraMessageBox.Show("This Feature Has Not Been Fully Implemented Yet!");

        using (StatsMonitorForm frm = new StatsMonitorForm())
        {
            if (frm.ShowDialog() == DialogResult.OK)
            {

            }
        }
    }

4 个答案:

答案 0 :(得分:5)

ShowDialog()打开一个模态对话框。

Show()打开非模态。

答案 1 :(得分:3)

尝试使用frm。Show而不是ShowDialog。 ShowDialog将新表单作为模式对话框打开,因此在关闭此表单之前无法访问该表单。

答案 2 :(得分:0)

关闭主窗体时关闭应用程序...

所以建议是,当打开子窗体时禁用主窗体关闭按钮...当没有子窗体打开时再次启用它...

或者创建一个全局变量(也许是一个bool),当一个子窗体打开时...它设置为true ...所以当按下主窗体上的关闭按钮时...它会检查这个变量是否为真它会提示保存..否则它会关闭......

答案 3 :(得分:0)

ShowDialog()以MODAL模式显示表单,这意味着您必须关闭已打开的新表单。

    private void barBtnStatsMonitor_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) 
    { 
        //XtraMessageBox.Show("This Feature Has Not Been Fully Implemented Yet!"); 

        using (StatsMonitorForm frm = new StatsMonitorForm()) 
        { 
            frm.Show();
            //do some work here to get the dialog result some other way..
        } 
    }