【问题标题】:C# WinForms - Cannot Access Main Form When Child Form Is OpenC# WinForms - 打开子窗体时无法访问主窗体
【发布时间】:2010-06-04 08:55:45
【问题描述】:

场景

我有一个带有主窗体的 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)
            {

            }
        }
    }

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

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

    Show() 打开非模态。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        所以一个建议是,当有子表单打开时禁用主表单关闭按钮...并在没有子表单打开时再次启用它...

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

        【讨论】:

          【解决方案4】:

          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..
                  } 
              } 
          

          【讨论】:

            猜你喜欢
            • 2018-05-21
            • 2011-07-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-24
            • 1970-01-01
            • 1970-01-01
            • 2014-03-31
            相关资源
            最近更新 更多