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

时间:2012-08-16 22:20:29

标签: c# winforms forms public-method

我使用两种表格:

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;
    }

但面板没有隐藏,由于刷新问题,请问有什么想法吗?

1 个答案:

答案 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();
    }

我希望这有点帮助。