2010-06-16 116 views
2

每次數據加載時都會調用datagridview rowsremoved事件。在某種程度上,每次數據加載時,現有的行都被刪除也是有意義的。所以技術上這個事件應該被調用。datagridview rowsremoved事件每次加載數據時都會調用

但我如何區分實際的刪除按鈕被按下。我不認爲應該使用關鍵事件,那不是一個乾淨的方法。

任何幫助將不勝感激。

回答

0

您可以在加載網格之前刪除事件處理程序,然後重新添加它嗎?

+0

我一直在嘗試這樣做,但事件我後來重新添加呢? – 2010-07-01 11:49:52

+0

您可以用加載網格的任何方法重新添加RowsRemoved事件。像 RemoveHandler grid.RowsRemoved,AddressOf someFunction; LoadData(); AddHandler grid.RowsRemoved,AddressOf someFunction; (對不起,我不知道如何在評論框中編碼格式) – joelt 2010-07-02 15:11:32

1

你可以有一個私人布爾變量來知道你什麼時候加載,什麼時候不加載。

private bool IsLoading { get; set; } 

在窗體Load事件,您設置的變量

private void MyForm_Load(object sender, EventArgs e) 
{ 
    this.IsLoading = true; 
// do stuff 
    this.IsLoading = false; 
} 

private void DataGridView_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e) 
{ 
      if (this.IsLoading) 
      { 
       return; 
      } 

    //do stuff 
} 
+0

沒有幫助。由於僅將DataSource設置爲DataGridView,因此不會調用RowsRemoved(顯示在callstack中)。它也在第一次顯示對象時從'System.Windows.Forms.dll!System.Windows.Forms.Control.SetVisibleCore(bool value = true)調用。 – 2013-07-05 06:56:49

相關問題