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