我有Form1和Form2。
Form1 有一个 dataGridView 和一个用于打开 Form2 的按钮。 我在 Form1 中编写了一个方法,如下所示,可以完美刷新 dataGridView:
public void RefreshGrid()
{
dataGridView1.DataSource = empControl.SelectAll(); //Works great
}
在 Form2 中,我插入表格并使用下面的代码来调用上述方法。 当我跟踪代码时,我发现它一路实现,但 dataGridView 没有刷新!
private void btnInsert_Click(object sender, EventArgs e)
{
//Insert Code (Inserts perfectly)
Form1 frm = new Form1();
frm.RefreshGrid();
this.Close();
}
}
我也尝试了 Form2 的 FormClosing 事件,但没有成功。
请帮帮我!
我在@MikeH和@Sybren的帮助下解决了我的问题:
表格1:
Form2 frm = new Form2(this);
frm.Show();
表格2:
private readonly Form1 frm1; //readonly is optional (For safety purposes)
public Form2(Form1 frm)
{
InitializeComponent();
frm1 = frm;
}
private void btnInsert_Click(object sender, EventArgs e)
{
frm1.RefreshGrid();
this.Close();
}
您的问题是您正在创建
Form1
的新实例。 您需要将 现有
new Form1
的实例传递给 Form1
,而不是
Form2
关闭按钮范围之前_点击谁打开了Form2 重新实现该方法 表格1 私人无效button_for_openingForm2_Click(对象发送者,EventArgs e) { //打开Form2 ...................... ...................... 刷新网格(); }