簡體   English   中英

反正有沒有阻止某個事件在另一個事件結束前被觸發?

[英]Is there anyway to prevent some event fired before end of another event?

在下面的代碼中,在RowsAdded結束之前觸發SelectionChanged事件,如何使事件成為原子?

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    {
        dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1];
        dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1].Selected = true;
    }

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
    {
        if (dataGridView1.CurrentRow != null)
        {
            //Something
        }
    }

我該怎么辦?

SelectionChanged在處理中間被解雇RowsAdded因為你造成了由改變當前單元格的SelectionChanged dataGridView1_RowsAdded 添加行不會導致觸發兩個事件 - 在處理第一個事件時會導致第二個事件。 (事實上​​,你可能導致SelectionChanged兩次,因為處理程序中的兩行似乎都改變了選擇)。

如果您不希望在RowsAdded處理程序中運行dataGridView1_SelectionChanged ,則需要暫時​​取消訂閱該事件:

dataGridView1.SelectionChanged -= dataGridView1_SelectionChanged;
// change the selection... 
dataGridView1.SelectionChanged += dataGridView1_SelectionChanged;

或者更好的是,重新設計您在SelectionChanged處理程序中執行的操作,以使其適用於事件的所有實例。

您可以覆蓋要控制的事件,然后在overriden事件中放置if條件並控制它何時觸發以及何時觸發。 馬赫迪

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM