【问题标题】:How to open a Form Dialog from a MDI child form (MDI application)如何从 MDI 子窗体(MDI 应用程序)打开窗体对话框
【发布时间】:2013-01-12 06:49:25
【问题描述】:

我有一个 MDI 主窗体,一个显示子窗体的菜单项(我们称之为 frmEmployees),在这个窗体内有一个 Button(btnNew...),我如何从这里打开一个窗体对话(frmNewEmployee);我的意思是,在frmNewEmployee 关闭之前,无法联系到frmEmployees

// Main_Form_Load
Main_Form.IsMdiContainer = true;

从主窗体中的菜单项,我打开frmEmployees

// MenuItem_Click
frmEmployees frmEmp = new frmEmployees();
frmEmp.MdiParent = this;
frmEmp.Show();

从一个按钮,我打开另一个表单

// newButton_Click
frmNewEmployee frmNE = new frmNewEmployee();
frmNE.MdiParent = this.MdiParent;
//frmNE.Show();      // OK, but allows return to frmEmployees
frmNE.ShowDialog();  // here comes the problem

有什么方法可以在frmNewEmployee 处于打开状态时阻止frmEmployees

提前致谢!

【问题讨论】:

    标签: c# winforms dialog mdi mdichild


    【解决方案1】:

    不要设置 frmNE.mdiParent。让实例成为 frmEmployees 的子代。重申一下,不要设置 mdiParent 属性并调用 frmNE.ShowDialog() 并且被阻止的表单将是 frmEmployee。

    【讨论】:

      【解决方案2】:
      namespace ModalTest
      {
          using System;
          using System.Windows.Forms;
      
          public partial class frmMain : Form
          {
              frmEmployees frmEmp = new frmEmployees();
              frmNewEmployee frmNE = new frmNewEmployee();
      
              public frmMain()
              {
                  InitializeComponent();
                  IsMdiContainer = true;
              }
      
              private void btnGo_Click(object sender, EventArgs e)
              {
                  frmEmp.MdiParent = this;
                  frmEmp.Show();
              }
      
              private void button1_Click(object sender, EventArgs e)
              {
                  frmNE.MdiParent = frmEmp.MdiParent;
                  frmEmp.Hide();
                  frmNE.Show();
              }
          }
      }
      

      基本上我所做的是将第三个表单frmNE 分配给第二个表单frmEMP 的父级,然后使用frmEmp.Hide() 隐藏表单。正如我上面提到的,使用“.ShowDialog()”会强制您的第三种形式变为模态,因此需要在继续执行之前满足它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-28
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        • 2020-10-12
        • 1970-01-01
        • 2014-07-02
        • 1970-01-01
        相关资源
        最近更新 更多