2010-10-31 112 views
1

考慮使用SelectionMode = RowHeaderSelect的2個DataGridView。在grid1中,我有2列;一個TextBox和一個CheckBox。在grid2中,我有2列;一個組合框和一個文本框。DataGridView UserDeletingRow未觸發

當我點擊RowHeader時,焦點轉到第一個單元格,而不是RowHeaderCell。當按下DEL按鈕時,單元格的內容被刪除(TextBox內容被清除,ComboBox被設置爲第一項)。

這樣的UserDeletingRow事件永遠不會觸發如DataGridView的常見問題解答說,「用戶可以刪除行只有在當前小區是不是在編輯模式下,AllowUserToDeleteRows屬性設置爲true」。

作爲一種變通方法我在RowHeaderMouseClick

grid.CurrentCell = grid.Rows[rowIndex].Cells[columnName]; 
grid.Rows[rowIndex].Selected = true; 

實現這個代碼在GRID1的情況下,我通過複選框列和當我按下DEL的UserDeletingRow事件觸發的名稱。但是,對於grid2傳遞ComboBox列的名稱不會觸發事件。

我試過以下內容:
1-選擇RowHeaderCell - > Exception,因爲它不能被選中。
2- grid.EndEdit() - >沒有效果。
3-將SelectionMode更改爲FullRowSelect,然後返回RowHeaderSelect - > Cell設置爲編輯模式。

我的問題:
我需要UserDeletingRow觸發,無論網格的列嗎?或者如果可能,選擇HeaderCell的解決方法?

編輯(縮寫的問題):
點擊的rowHeader選擇行,並把第一個單元格在編輯模式下,如果適用,這樣點擊DEL鍵刪除單元格內容,不火UserDeletingRow事件。作爲一種解決方法,我選擇一個單元格(如果可用),它不能被置於編輯模式,例如, CheckBoxColumn。

這是單擊RowHeader的默認行爲嗎?如果是的話,你能告訴我一個解決方法嗎?如果沒有,你能指出我這種行爲的原因嗎?

編輯2:
我發現,在編輯模式下設置爲EditOnEnter發出咔噠的rowHeader把第一個單元格中的編輯模式。我會盡力克服這一點,但任何幫助表示讚賞。

回答

2

這是一個恥辱,我不能留下評論(因爲代表的東西等!) 你也不清楚你到底想做什麼。

單擊該行的RowHeader將導致整行被選中,然後按Del按鈕該行被刪除,並觸發該事件!

如果您希望能夠在不選擇行標題的情況下刪除一行,請考慮使用「全行選擇」而不是「行標題選擇」。

+0

單擊RowHeader選擇整行,但將第一個單元格置於編輯模式。這就是爲什麼按DEL刪除單元格內容並不會觸發UserDeletingRow事件。 – 2010-10-31 15:04:56

+1

好吧,我現在試過了,它沒有把我的第一個單元格放到編輯模式,我可以很容易地刪除那一行。不知道是否有一個屬性,你提到的行爲... – M2X 2010-10-31 15:26:12

+0

當EditMode設置爲EditOnEnter時單擊RowHeader將第一個單元格編輯。這就是爲什麼DEL不會觸發UserDeletingRow事件。 – 2010-10-31 16:19:30