C# 如何修改表单并从其他表单刷新表单
我使用两种形式: 表单1包含按钮1 表单2包含按钮2和面板1 我的项目开始使用Form2。然后我点击按钮2显示表单1C# 如何修改表单并从其他表单刷新表单,c#,winforms,forms,public-method,C#,Winforms,Forms,Public Method,我使用两种形式: 表单1包含按钮1 表单2包含按钮2和面板1 我的项目开始使用Form2。然后我点击按钮2显示表单1 private void button2_Click(object sender, EventArgs e) { Form1 Frm = new Form1(); Frm.Show(); } 然后在Form1上,我单击按钮1以隐藏Form2上的Panel1 private void button1_Click(ob
private void button2_Click(object sender, EventArgs e)
{
Form1 Frm = new Form1();
Frm.Show();
}
然后在Form1上,我单击按钮1以隐藏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;
}
但是由于刷新问题,面板没有隐藏,有什么想法吗?让两个窗体(或任意两个类)相互对话的标准方式是使用事件 在您的情况下,将此添加到
表格1
代码的顶部:
public event ClosePanelHandler ClosePanel;
public delegate void ClosePanelHandler(object sender, EventArgs e);
然后,在表单1
的按钮1\u单击事件(这会引发事件):
-
最后,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();
}
我希望这能有所帮助。在按钮1中添加
FormInstance.Show()
以查看您创建的新表单。有许多优秀的书籍可以帮助您学习面向对象编程。谢谢您,Hans,有没有办法将更改传递到最初显示的Form2?太棒了,这很有魅力,非常感谢Holger。@AlphaBird,欢迎您。我对Form1
的按钮做了一个小小的更改,单击事件检查null
。(如果没有订阅事件的侦听器,则返回一个null
,如果我们不检查它,它将抛出异常。)
private void button2_Click(object sender, EventArgs e)
{
Form1 Frm = new Form1();
Frm.ClosePanel += HandleCloseRequest;
Frm.Show();
}