2011-05-15 87 views
1

我想更新我的「交換機」上的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(); 
     } 

這就是我試圖做的,但它在其他情況下造成的問題時,我需要打開窗體2。這個問題特別是發生在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(); 



} 

回答

3

這聽起來像你正試圖創建窗體切換的一個新實例,而不是修改窗體的現有實例。當你從配電盤打開一個表單時,我會建議在實例引用中傳遞配電盤表單。然後,在關閉打開的表單時,在form_closing事件中,您將引用實例中傳入的實例作爲要更新的交換機表單。

該法和其他方法在這篇文章中指定:

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

+1

@korrowan - 不知道你的意思,但基本上,這些方法可以更新您的數據網格,並揭開序幕的刷新方法的形式,所以你在不要((或其他))錯誤 – IAmTimCorey 2011-05-15 23:27:24

+0

@BiggsTRC我相信這和我已經做過的事情是一樣的,除非我感到困惑......我原來的帖子是用我使用的代碼更新的。 – korrowan 2011-05-15 23:27:33

+0

@korrowan - 如果您在交換機上手動運行更新,更新是否會工作?我問的是這個方法PerformRefresh工作嗎?你有沒有試過在你的總機上添加一個新的按鈕('Form1'),它可以啓動PerformRefresh方法,並在關閉Form2後點擊它? – IAmTimCorey 2011-05-15 23:37:07

相關問題