从另一个表单上的表单结束事件更新表单

时间:2011-05-15 21:39:16

标签: c# winforms datagridview refresh

我正在尝试更新我的'交换机'上的datagridview来解决并发问题。交换机有许多复选框,可在某些进程完成时进行检查。当我单击已编辑的记录上的复选框时,我得到并发错误,因为dgv不是最新的。

我试过这样做:

How to refresh datagridview when closing child form?

无济于事,因为它在整个项目中引发了其他错误。

关于如何在关闭另一个表单的表单上刷新我的交换机上的datagridview的任何帮助都会很棒。

由于

public partial class frmSwitch : Form 
{
    public frmSwitch() 
    {
        //'add a label and a buttom to form
        InitializeComponent();
    }


    public void PerformRefresh() 
    {
        this.propertyInformationBindingSource.EndEdit();
         this.propertyInformationTableAdapter.Fill(this.newCityCollectionDataSet.PropertyInformation);
        this.propertyInformationDataGridView.Refresh()      }
}

public partial class frmSummary : Form
{
    frmSwitch _owner;
    public frmSummary(frmSwitch owner)
    //public frmSummary()
    {
        InitializeComponent();

            _owner = owner;
            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmSummary_FormClosing);
        }
        private void frmSummary_FormClosing(object sender, FormClosingEventArgs e)
        {
           _owner.PerformRefresh();
        }

这就是我尝试做的事情,但是当我需要打开Form2时,它在其他情况下引起了问题。问题特别发生在表格2的原始开头,如下:

private void propertyInformationDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    System.Data.DataRowView SelectedRowView;
    newCityCollectionDataSet.PropertyInformationRow SelectedRow;

    SelectedRowView = (System.Data.DataRowView)propertyInformationBindingSource.Current;
    SelectedRow = (newCityCollectionDataSet.PropertyInformationRow)SelectedRowView.Row;

    frmSummary SummaryForm = new frmSummary();
    SummaryForm.LoadCaseNumberKey(SelectedRow.CaseNumberKey, true, null);
    SummaryForm.Show();



}

1 个答案:

答案 0 :(得分:3)

听起来您正在尝试创建Switchboard表单的新实例,而不是修改表单的现有实例。当您从交换机打开表单时,我建议将实例引用传递给交换机表单。然后,当您关闭打开的表单时,在form_closing事件中,您将引用传入的实例作为要更新的Switchboard表单。

此方法和其他方法在本文中指定:

http://colinmackay.co.uk/blog/2005/04/22/passing-values-between-forms-in-net/