Panel无法在MDI中设置Visible True

时间:2013-06-23 08:29:59

标签: c# .net winforms

我正在使用C#。 Net Windows应用程序。

我有一个MDI父表单和许多子表单。我将面板放在MDI父窗体中,并在面板中拖动几个按钮。

当我点击按钮时,他们打开另一个子表单并将可见的false设置为面板 像这样(示例代码):

private void Button_Click(object sender, EventArgs e)
{
    panel1.Visible = false;

    ChildForm Form2 = new ChildForm();
    Form2.WindowState = FormWindowState.Maximized;           
    Form2.Show();
}

现在他们完美地工作了。问题是,当我关闭子窗体时,面板在MDI父窗体中无法显示。它总是面板可见错误。我设置为true。,请参阅我的代码。

private void ChildForm _FormClosed(object sender, FormClosedEventArgs e)
{
     this.Dispose();
     MDI md = new MDI();
     md.panel1.Visible = true;
}

我也在使用BringToFrontSendToBack。没用请协助。

2 个答案:

答案 0 :(得分:1)

问题是:

  • 您使用MDI md = new MDI();

    子表单中创建 MDI表单的新实例

    您应该检索已打开的 MDI 的实例,并在此实例上设置md.panel1.Visible = true;。您可以使用MdiParent属性。

    MDI md = (MDI)this.MdiParent;
    md.panel1.Visible = true;
    
  • 然后在设置面板可见的代码之前调用This.Dispose。我不确定This.Dispose之后的代码是否会被执行...

答案 1 :(得分:-1)

朋友们,我解决了这个问题,现在我得到了工作...... 这里解决方案..

>  private void ChildForm_FormClosed(object sender,FormClosedEventArgs e)
>         {
>             MDI md = (MDI)this.MdiParent;
>             md.panel1.Visible = true;
>         }
相关问题