我有一个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();
从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
在frmEmployees
打开时是否有阻止frmNewEmployee
的方法?
提前致谢!
答案 0 :(得分:4)
不要设置frmNE.mdiParent。让实例成为frmEmployees的孩子。要重做,请不要设置mdiParent属性并调用frmNE.ShowDialog(),并且阻止的表单将是frmEmployee。
答案 1 :(得分: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()'会强制你的第三个表单变为模态,因此在执行继续之前需要满足它。