我正在尝试更新我的'交换机'上的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();
}
答案 0 :(得分:3)
听起来您正在尝试创建Switchboard表单的新实例,而不是修改表单的现有实例。当您从交换机打开表单时,我建议将实例引用传递给交换机表单。然后,当您关闭打开的表单时,在form_closing事件中,您将引用传入的实例作为要更新的Switchboard表单。
此方法和其他方法在本文中指定:
http://colinmackay.co.uk/blog/2005/04/22/passing-values-between-forms-in-net/