[英]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.