如何修改表单并从另一个表单刷新它 [英] How to modify a Form and refresh it from another Form

查看:145
本文介绍了如何修改表单并从另一个表单刷新它的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用两种形式:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆