0

我使用两种形式:

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

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

4

1 回答 1

2

让两种形式(或任何两个类)相互交谈的标准方式是使用事件。

在您的情况下,将其添加到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();
    }

我希望这个能有一点帮助。

于 2012-08-16T23:18:06.040 回答