代码之家  ›  专栏  ›  技术社区  ›  Developer

当子窗体处于活动状态时,如何使MDI窗体处于非活动状态

  •  2
  • Developer  · 技术社区  · 14 年前

    我的代码如下以显示子窗体

      private void ShowNewForm(object sender, EventArgs e)
        {
            foreach (Form frm in Application.OpenForms)
            {
                if (frm.Text == "Main")
                {
                    IsOpen = true;
                    frm.Focus();
                    break;
                }
            }
            if (IsOpen == false)
            {
                Form childForm = new FrmMain();
                childForm.MdiParent = this;
                childForm.Show();
            }
         }
    

    现在我需要的是,当子窗体处于活动状态时,我希望MDI处于非活动状态,直到用户关闭子窗体为止。

    一般来说,我们会写表格

            frm.showDialog()
    

    2 回复  |  直到 14 年前
        1
  •  3
  •   Vyasdev Meledath    14 年前

    像这样给予

    if (IsOpen == false)
            {
    
        Form childForm = new FrmMain();
             childForm.TopLevel=true;
             childForm.ShowInTaskbar=false;
             childForm.ShowDialog();
            }
    
        2
  •  2
  •   Hans Passant    14 年前

    这是MDI的基础,子窗体不能是模态的。你呢 使用ShowDialog()并确保未设置MdiParent属性。这样的对话框不受MDI父对象的边界约束,可以使用StartPosition属性将其居中。这样地:

            using (var dlg = new Form2()) {
                dlg.StartPosition = FormStartPosition.CenterParent;
                if (dlg.ShowDialog(this) == DialogResult.OK) {
                    // Use dialog properties
                    //...
                }
            }