如何刷新另一个表单?

时间:2017-12-12 18:04:46

标签: c# forms datagridview

我正在使用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();
}

2 个答案:

答案 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();
}

你可能需要调整一些东西,因为我没有测试过这个。