2012-05-15 22 views
0

嗯,我有以下問題:的DataRow刪除兵不血刃CurrentChanged事件

我需要刪除從BindingSource的一排沒有fireing的CurrentChanged事件。刪除工作沒有任何問題。但它會立即引發CurrentChanged事件,這會導致我的代碼與正在執行的CurrentChanged事件匹配。這導致了一個問題。 有沒有什麼辦法可以達到像.Delete()類似的效果而不會引發事件?

+0

其連接到的BindingSource(SQLite的DB)一個DataGridView要精確 – reijin

+0

我不知道你真的真的需要做的或者以其他方式存在以做你需要的東西。但是你可以添加bool標誌,在刪除記錄時將其設置爲true,並在事件處理程序中檢查並將其設置爲false – gabba

+0

當某些記錄被刪除時通知ui是一種很好的做法 – gabba

回答

0

如果有訂閱者,刪除一行將始終引發該事件。

如果事件代碼是你的控制之下,你可以設置你的BindingSource_CurrentChanged事件處理程序檢查標誌:

private void DeleteRow() 
{ 
    this.justDeletedRow = true; 
    this.bindingSource.DeleteRow(...); 
} 

protected void BindingSource_CurrentChanged(object sender ...) 
{ 
    if (this.justDeletedRow) 
    { 
    this.justDeletedRow = false; 
    return; 
    } 

    // Process changes otherwise.. 
} 

如果代碼是不是你的控制之下 - 如果你結合一個組成部分,說的 - 那麼你可以執行操作時解除綁定的處理程序:

private void DeleteRow() 
{ 
    this.bindingSource.CurrentChanged -= this.component.BindingSource_CurrentChanged; 
    this.bindingSource.DeleteRow(...); 
    this.bindingSource.CurrentChanged += this.component.BindingSource_CurrentChanged; 
} 
+0

我通過很快取消訂閱來完成它。但我認爲國旗是一個更好的主意......謝謝! – reijin