我想在关闭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并使用它,还是有其他解决方案?
答案 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();
}