1

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

// 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

打开frmEmployees时有什么方法可以阻止吗?frmNewEmployee

提前致谢!

4

2 回答 2

4

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

于 2013-01-11T22:48:28.363 回答
0
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()”会强制您的第三种表单变为模态,因此需要在继续执行之前满足它。

于 2013-01-11T22:49:25.173 回答