如何从MDI子窗体(MDI应用程序)打开窗体对话框
本文关键字:MDI 窗体 开窗 对话框 应用程序 | 更新日期: 2023-09-27 17:51:20
我有一个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
?
提前感谢!
不要设置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(('强制您的第三个表单成为模态,因此要求在继续执行之前满足它。