簡體   English   中英

如何從MDI子窗體(MDI應用程序)打開窗體對話框

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM