我正在使用Windows窗体,以一种形式列出表的数据,而在另一种形式中,我添加了数据。在我列出的表单中,我有表单加载来在datagridview中设置表的值。所以我希望当我在保存表单中单击“保存”时,我会重新加载列出数据的其他表单。我尝试过类似的事情:
form.refresh
但不起作用。我在点击添加时尝试关闭列表表单,然后当我点击保存时它会再次出现,这有效,但还有其他方法吗?
这是我的代码:
列表表单:
private void ListadoExpedientes_Load(object sender, EventArgs e)
{
dgvExpedientes.AutoGenerateColumns = false;
Exp = ExpedienteNG.GetExpedientes();
bExpedientes = new BindingList<Expediente>(Exp);
dgvExpedientes.DataSource = bExpedientes;
}
以下是保存表单:
private void btnGuardar_Click(object sender, EventArgs e)
{
ListadoExpedientes listexp = new ListadoExpedientes();
listexp.Refresh();
}
答案 0 :(得分:1)
Class(Form) - Form2(ex。),它包含需要以基本形式更新的方法 - Form1
在Form2中定义构造函数和一个包含Form1对象的变量
Form1 frm1;
public Form2(Form1 _frm1){
InitializeComponent();
...
this.frm1 = _frm1;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.RefreshDatagrid);
}
在Form1中
public void RefreshDataGrid()
{
dgvExpedientes.DataSource = null;
dgvExpedientes.DataSource = bExpedientes;
}
private void OpenForm2_Click(object sender, EventArgs e)
{
Form2 = new Form2 (this);
t.ShowDialog();
}
当您关闭form2时,此代码将更新form1中的dgvExpedientes, 所以在完成上传记录并关闭form2后会触发事件。 我希望这对你的情况有所帮助
答案 1 :(得分:0)
您可以尝试使用Application.OpenForms collection查找您的打开表单。 然后从那里调用刷新。 例如:
var listForm = Application.OpenForms.Cast<Form>().Where(x => x.Name == "ListadoExpedientes").FirstOrDefault();
if (listForm != null)
{
listForm.Refresh();
}
你可能需要调整一些东西,因为我没有测试过这个。