2009-09-10 92 views
2

我有一個datagridview可能或不可能有行選擇時,用戶通過單擊列標題排序。如果有行選擇沒有問題,但如果有0選定的行,然後排序自動選擇一行(選擇是一致的,但我不知道什麼標準)。我怎樣才能防止這種行爲發生。防止DataGridView選擇行時排序如果以前沒有選擇

如果相關,則DGV不是數據綁定並啓用了全行選擇。

回答

6

處理DataGridView中的排序事件:

this.dataGridView1.Sorted += new System.EventHandler(dataGridView1_Sorted); 

void dataGridView1_Sorted(object sender, System.EventArgs e) 
{ 
    dataGridView1.ClearSelection(); 
} 
+0

這也將清除現有用戶的選擇,我想保留。在執行排序之前似乎沒有發生事件,例如當表單關閉時(FormClosing和FormClosed),我可以使用它來檢查狀態以確定是否應該在事後清除選擇。 – 2009-09-10 19:40:40

+0

CellMouseDown事件在排序之前觸發,可用於檢查選擇狀態。排序後發生的可能性更大的ColumnHeaderClick事件觸發並且無用。 – 2009-09-11 13:45:26

+1

所需的附加代碼是: bool selectionsMade = false; private void DataGridView_CellMouseDown(object sender,DataGridViewCellMouseEventArgs e){if((e.Button == MouseButtons.Left)&&(e.RowIndex == -1)){selectionsMade =(((DataGridView)sender).SelectedRows.Count> 0 ); }} – 2009-09-11 13:46:09