我使用两种表格:
Form1包含button1
Form2包含button2和Panel1
我的项目开始使用Form2。然后我点击button2来显示Form1
private void button2_Click(object sender, EventArgs e)
{
Form1 Frm = new Form1();
Frm.Show();
}
然后在Form1上,我单击button1以隐藏Form2上的Panel1
private void button1_Click(object sender, EventArgs e)
{
Form2 FormInstance = new Form2();
FormInstance.displayInit();
FormInstance.Refresh();
}
displayInit()是Form2中的一个方法:
public void displayInit()
{
panel1.Visible = false;
}
但面板没有隐藏,由于刷新问题,请问有什么想法吗?
答案 0 :(得分:1)
让两种形式(或任何两种类)相互交谈的标准方式是事件。
在您的情况下,请将其添加到Form1
代码的顶部:
public event ClosePanelHandler ClosePanel;
public delegate void ClosePanelHandler(object sender, EventArgs e);
然后,在Form1
的Button1_Click事件中(这会引发事件):
private void button1_Click(object sender, EventArgs e)
{
if (ClosePanel != null){
ClosePanel(this, new EventArgs());
}}
-
最后,Form2
需要处理事件(并正在监听它)才能采取行动:
private void HandleCloseRequest(object sender, EventArgs e)
{
panel1.Visible = false;
}
另外,修改
private void button2_Click(object sender, EventArgs e)
{
Form1 Frm = new Form1();
Frm.ClosePanel += HandleCloseRequest;
Frm.Show();
}
我希望这有点帮助。