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