繁体   English   中英

如何从MDI子窗体(MDI应用程序)打开窗体对话框

[英]How to open a Form Dialog from a MDI child form (MDI application)

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

// Main_Form_Load
Main_Form.IsMdiContainer = true;

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

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

从一个Button,我打开另一个表单

// 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方法?

提前致谢!

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

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()'会强制你的第三个表单变为模态,因此在执行继续之前需要满足它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM