简体   繁体   English

如何修改一个表单并从另一个表单刷新它

[英]How to modify a Form and refresh it from another Form

I use two Forms: 我使用两种形式:

Form1 contains button1 Form1包含button1

Form2 contains button2 and Panel1 Form2包含button2和Panel1

My project starts using Form2. 我的项目开始使用Form2。 Then I click on button2 to show Form1 然后我单击button2以显示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 然后在Form1上,我单击button1以在Form2上隐藏Panel1

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 FormInstance = new Form2();
        FormInstance.displayInit();
        FormInstance.Refresh();
    }

displayInit() is a method inside Form2: displayInit()是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: 根据您的情况,将此代码添加到Form1代码的顶部:

public event ClosePanelHandler ClosePanel;
public delegate void ClosePanelHandler(object sender, EventArgs e);

Then, in Form1 's Button1_Click event (this raises the event): 然后,在Form1的Button1_Click事件中(这引发事件):

 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: 最后, Form2需要处理事件(并正在监听事件)以便采取措施:

 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. 我希望这个能有一点帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM