在第二秒进行编辑后刷新表单
本文关键字:编辑 刷新 表单 二秒 | 更新日期: 2023-09-27 17:57:35
大家好,我目前正在尝试在一秒钟内完成更改后刷新表单。在我的第一个表单上,我按下一个按钮"创建",它将打开另一个表单,form2。第二个表单将有输入字段,允许您输入填充第一个表单上的组合框的值。在第二个窗体上有一个按钮"更新"。我希望第一个窗体上按下更新后刷新第一个窗体。
我知道有this.refresh();
,但我不确定这对我是否有用
在表格2-
Private void Form2UpdateButton_Click
{
//do update stuff
Form1_load.Refresh();
}
或者
private void Form2UpdateButton_Click
{
//do update stuff
Form1.close();
Form1.Open();
}
我对C#还很陌生,将两个表单交互在一起对我来说是一个相当复杂的概念,所以如果我的做法不对,请告诉我。我的刷新可能在错误的地方,但我认为这正是我想要的。
在form2上创建一个自己的事件,该事件在单击按钮时触发。这样你就可以只form2.OnUpdateClicked += yourMethod
了。像这样:
public partial class Form1 : Form
{
private void CreateForm2()
{
Form2 frm2 = new Form2();
// Hook the event of form2 to a method
frm2.PropertyUpdated += Form2Updated;
}
private void Form2Updated(object sender, EventArgs e)
{
// this will be fired
}
}
public partial class Form2 : Form
{
// On form2 create an event
public event EventHandler PropertyUpdated;
private void Form2UpdateButton_Click()
{
// If not null (e.g. it is hooked somewhere -> raise the event
if(PropertyUpdated != null)
PropertyUpdated(this, null);
}
}
建议:
您的第二个表单应该参照第一个表单创建,即
表格1:
public void RefreshParameters()
{
// ... do your update magic here
}
private void openForm2(..)
{
// Pass your current form instance (this) to new form2
var aForm = new Form2(this);
aForm.Show(); // show, run, I don't remember... you have it
}
表格2:
// Here you will store a reference to your form1
form1 daddy = null;
// A new constructor overloading default one to pass form1
public Fomr2(Form1 frm):base()
{
daddy = frm; // Here you store a reference to form1!
}
public void UpdateDaddy()
{
// And here you can call any public function on form1!
frm.RefreshParameters();
}
一种方法是将Form1的引用传递给Form2,如下所示:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void buttonLaunchForm_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.LauncherForm = this;
form2.Show();
}
public void RefreshFormData()
{
// Refresh
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public Form1 LauncherForm { set; get; }
private void buttonUpdate_Click(object sender, EventArgs e)
{
// do your normal work then:
LauncherForm.RefreshFormData();
}
}
上述技术被称为"属性注入";