如何在子表单处于活动状态时禁用MDIparent表单

时间:2016-02-01 08:58:06

标签: c#

我是C#的新生并使用的是Microsoft Visual C#2013。

我的目标是

  1. 在其MDIparent表单中打开子表单
  2. 在子表单处于活动/打开状态时禁用MDIparent表单
  3. 在VB.net中使用

    更容易
    frmStuDetails.ShowDialog()
    

    我试过了

    1

    MyChildForm childForm = new MyChildForm();
    childForm.ShowDialog(this);
    

    结果....但问题是子表单在MDIparent表单/容器中没有打开

    2。 在MDIparent调用按钮下

    frmViewStuList childForm = new frmViewStuList(this);
    childForm.Owner = this;
    childForm.Show();
    
    <{1>}

    下的

    childForm_Activated
    <{1>}

    下的

    if (this.Owner != null)
    {
        this.Owner.Enabled = false;
    }
    

    结果.....它使子窗体处于活动状态,但在子窗体关闭时冻结MDIparent

    3

    childForm_Deactivate

    结果......这似乎是最好的选择,但是儿童表格在MDIparent中没有打开

    如果您有任何其他想法,请提供帮助

    由于

1 个答案:

答案 0 :(得分:0)

禁用MDI父级也将禁用对MDI子级的访问,因此这是不可行的方法。如果你已经“伪装”了MDI孩子,我宁愿打开子窗体作为模态对话框。您可以对其进行样式设置并使其居中,因此它更像是MDI应用程序的一致部分。

private void openChildDialogToolStripMenuItem_Click(object sender, EventArgs e)
{
    var childForm = new ChildForm
    {
        ShowInTaskbar = false,
        MinimizeBox = false,
        MaximizeBox = false
    };
    childForm.StartPosition = FormStartPosition.CenterParent;
    childForm.ShowDialog(this);
}