如何修改表单并从另一个表单刷新它 [英] How to modify a Form and refresh it from another Form
问题描述
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;
}
但由于刷新问题,面板并未隐藏,请有任何想法?
有两种形式(或任何两种类)彼此交谈的标准方式是使用事件。
在您的情况下,将其添加到 Form1
代码的顶部:
公共事件ClosePanelHandler ClosePanel;
public delegate void ClosePanelHandler(object sender,EventArgs e);
然后,在 Form1
的Button1_Click事件(这引发了事件):
pre $ private $ button1_Click(object sender,EventArgs e)
{
if(ClosePanel!= null){
ClosePanel(this,new EventArgs());
}}
-
最后, Form2
需要处理事件(并且正在监听)才能采取行动:
private void HandleCloseRequest(object sender,EventArgs e)
{
panel1.Visible = false;
$ / code>
另外,修改
< pre $ private void button2_Click(object sender,EventArgs e)
{
Form1 Frm = new Form1();
Frm.ClosePanel + = HandleCloseRequest;
Frm.Show();
}
我希望这会有所帮助。
I use two Forms:
Form1 contains button1
Form2 contains button2 and Panel1
My project starts using Form2. Then I click on button2 to show Form1
private void button2_Click(object sender, EventArgs e)
{
Form1 Frm = new Form1();
Frm.Show();
}
Then on Form1, I click on button1 to hide Panel1 on Form2
private void button1_Click(object sender, EventArgs e)
{
Form2 FormInstance = new Form2();
FormInstance.displayInit();
FormInstance.Refresh();
}
displayInit() is a method inside Form2:
public void displayInit()
{
panel1.Visible = false;
}
But the panel is not hidden, due to a refresh issue, any idea please ?
The standard way of having two forms (or any two classes) talk to each other is with events.
In your case, add this to the top of the Form1
code:
public event ClosePanelHandler ClosePanel;
public delegate void ClosePanelHandler(object sender, EventArgs e);
Then, in Form1
's Button1_Click event (this raises the event):
private void button1_Click(object sender, EventArgs e)
{
if (ClosePanel != null){
ClosePanel(this, new EventArgs());
}}
-
Finally, Form2
needs to handle the event (and be listening for it) in order to take action:
private void HandleCloseRequest(object sender, EventArgs e)
{
panel1.Visible = false;
}
Also, modify
private void button2_Click(object sender, EventArgs e)
{
Form1 Frm = new Form1();
Frm.ClosePanel += HandleCloseRequest;
Frm.Show();
}
I hope this helps a bit.
这篇关于如何修改表单并从另一个表单刷新它的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!