Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当MDI父窗体上的子窗体关闭或出现时,显示/隐藏、BringToFront/SendToBack父窗体上的面板_C#_.net_Winforms_Panel - Fatal编程技术网

C# 当MDI父窗体上的子窗体关闭或出现时,显示/隐藏、BringToFront/SendToBack父窗体上的面板

C# 当MDI父窗体上的子窗体关闭或出现时,显示/隐藏、BringToFront/SendToBack父窗体上的面板,c#,.net,winforms,panel,C#,.net,Winforms,Panel,当MDI父窗体上的子窗体关闭时,我需要隐藏父窗体上的面板,并在子窗体关闭时显示父窗体上的面板 目前,我正在使用SendtoBack()在父窗体上的面板前面显示子窗体,但当我关闭子窗体时,面板不会显示回来,即使我使用: BringtoFront() 或 这不起作用了……请帮帮我 您可以在子窗体中创建新的父窗体。您需要将父窗体对象传递给子窗体,然后使用它来显示/隐藏面板,并将“面板修改器”属性设置为“公共”。 例如 父窗体: public partial class ParentForm : For

当MDI父窗体上的子窗体关闭时,我需要隐藏父窗体上的面板,并在子窗体关闭时显示父窗体上的面板

目前,我正在使用SendtoBack()在父窗体上的面板前面显示子窗体,但当我关闭子窗体时,面板不会显示回来,即使我使用:

BringtoFront()

这不起作用了……请帮帮我


您可以在子窗体中创建新的父窗体。您需要将父窗体对象传递给子窗体,然后使用它来显示/隐藏面板,并将“面板修改器”属性设置为“公共”。 例如

父窗体:

public partial class ParentForm : Form
{
    public ParentForm()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        panel1.Visible = false;
        ChildForm childForm = new ChildForm();
        childForm.MdiParent = this;
        childForm.Show();
    }
}
子表单:

public partial class ChildForm : Form
{
    public ChildForm()
    {
        InitializeComponent();
    }

    private void Child_FormClosed(object sender, FormClosedEventArgs e)
    {
        ParentForm parentForm = (ParentForm)this.MdiParent;
        parentForm.panel1.Visible = true;
    }
}

您正在子窗体中创建新的父窗体。您需要将父窗体对象传递给子窗体,然后使用它来显示/隐藏面板,并将“面板修改器”属性设置为“公共”。 例如

父窗体:

public partial class ParentForm : Form
{
    public ParentForm()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        panel1.Visible = false;
        ChildForm childForm = new ChildForm();
        childForm.MdiParent = this;
        childForm.Show();
    }
}
子表单:

public partial class ChildForm : Form
{
    public ChildForm()
    {
        InitializeComponent();
    }

    private void Child_FormClosed(object sender, FormClosedEventArgs e)
    {
        ParentForm parentForm = (ParentForm)this.MdiParent;
        parentForm.panel1.Visible = true;
    }
}
使用此代码 以父形式

    private void MainMenu_ChildForm_Click(object sender, EventArgs e)
    {
            ChildForm frm = new ChildForm();
            frm.MdiParent = this;
            ShowHideMainPanel(frm);
            frm.Show();
    }

void ShowHideMainPanel(Form frm)
        {
            frm.FormClosed += new FormClosedEventHandler(Form_Closed);
            panel1.Visible = false;
        }

        void Form_Closed(object sender, FormClosedEventArgs e)
        {
            panel1.Visible = true;
        }
通过为子面板指定关闭事件以在面板关闭后显示面板,使用此代码 以父形式

    private void MainMenu_ChildForm_Click(object sender, EventArgs e)
    {
            ChildForm frm = new ChildForm();
            frm.MdiParent = this;
            ShowHideMainPanel(frm);
            frm.Show();
    }

void ShowHideMainPanel(Form frm)
        {
            frm.FormClosed += new FormClosedEventHandler(Form_Closed);
            panel1.Visible = false;
        }

        void Form_Closed(object sender, FormClosedEventArgs e)
        {
            panel1.Visible = true;
        }

通过为子窗体指定关闭事件以在面板关闭后显示面板

如何打开/调用子窗体?child.ShowDialog()?@ibram:不,我使用的是child.Show(),如果您使用ShowDialog()而不是Show(),您的父窗体将知道您的子窗体是否已关闭,并且您可以在父窗体中执行面板工作。ShowDialog()也不起作用您不需要为面板使用bringtofront和sendtoback,如果只想隐藏如何打开/调用子窗体,请使用panel.visible?child.ShowDialog()?@ibram:不,我使用的是child.Show(),如果您使用ShowDialog()而不是Show(),您的父窗体将知道您的子窗体是否已关闭,并且您可以在父窗体中执行面板工作。ShowDialog()也不起作用您不需要为面板使用bringtofront和sendtoback,如果只想隐藏,请使用panel.visibleit@Reniuz:好的,先生,那么当我们在子窗体中创建新的父窗体时,面板不显示的原因是什么?调用构造函数并执行InitializeComponent()方法,那么为什么面板不出现?您不需要另一个父窗体,所以不需要创建新的父窗体。您只需要使用父窗体的一个实例。你能发布你所有的代码吗?我知道你想做什么:)。好的。在示例代码中,只需尝试更改PARENTForm P=newparentform();station to PARENTForm P=(PARENTForm)this.mdipradent;在关闭事件中。我更新了代码。创建子窗体时,分配MDIPRENT=this;在关闭事件中,从MdiParent属性抓取父对象并设置panel1.Visible=true;我再次更新了我的代码…它100%工作我尝试:)还记得将panel1 modifiers属性更改为public,以便您可以在子窗体中访问它。@Reniuz:好的,先生,那么当我们在子窗体中创建新的父窗体时,面板不显示的原因是什么?调用构造函数并执行InitializeComponent()方法,那么为什么面板不出现?您不需要另一个父窗体,所以不需要创建新的父窗体。您只需要使用父窗体的一个实例。你能发布你所有的代码吗?我知道你想做什么:)。好的。在示例代码中,只需尝试更改PARENTForm P=newparentform();station to PARENTForm P=(PARENTForm)this.mdipradent;在关闭事件中。我更新了代码。创建子窗体时,分配MDIPRENT=this;在关闭事件中,从MdiParent属性抓取父对象并设置panel1.Visible=true;我再次更新了我的代码…它100%工作我尝试:)还记得将panel1 modifiers属性更改为public,以便您可以在子窗体中访问它。