C#中关闭表格后的使用方法

时间:2018-07-05 11:14:00

标签: c# forms

我想在关闭form2.cs后在类form1.cs中调用一个方法

form1:

private void button1_Click(object sender, EventArgs e)
{
  var form2= new form2();
  form2.Show(); 
}

public void Form1Refresh()
{
  //some code 
}

form2:

private void button1_Click(object sender, EventArgs e)
{
  ...

  Close();

  //call refresh from form1

}

关闭表单后如何使用Refresh()方法?我尝试使用new form1并调用该函数,但这使用了新对象并且不起作用。

我应该将form1的对象传递给form2并使用它,还是有其他解决方案?

4 个答案:

答案 0 :(得分:1)

创建并显示Form2时,将处理其FormClosed事件。

private void button1_Click(object sender, EventArgs e)
{
    var form2 = new Form2();
    form2.FormClosed += form2_FormClosed; // This Line
    form2.Show();
}

void form2_FormClosed(object sender, FormClosedEventArgs e)
{
    Debug.Print("Form 2 has been closed. Call the Refresh Action");
}

答案 1 :(得分:1)

这个问题可能是重复的。

在Form1上按下按钮构造Form2时,您可以钩住FormClosed事件

        var form2 = new Form2();
        form2.Show();
        form2.FormClosed += (sender, eventArgs) => { Refresh(); };

Windows窗体已经包含一个名为Refresh的方法,您是否打算对基类隐藏该方法?我建议给它起一个不同的名字,或者至少从您的方法中调用base.Refresh();

答案 2 :(得分:0)

尝试调用MainWindow并将其解析为Form1。

Window window = Application.Current.MainWindow;

(((form1)window).Refresh();

答案 3 :(得分:0)

尝试此代码

FORM1:

 private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2(this);
            f2.Show();
        }

 public void Form1Refresh()
        {
           ///////

        }

FORM2:

 public Form1 f1;
        public Form2(Form1 m)
        {
          this.f1 = m;
            InitializeComponent();
        }


 private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
            f1.Form1Refresh();     

        }