簡體   English   中英

DataGridView UserDeletingRow不觸發

[英]DataGridView UserDeletingRow Not Firing

考慮兩個DataGridViews都具有SelectionMode = RowHeaderSelect。 在grid1中,我有2列; 一個TextBox和一個CheckBox。 在grid2中,我有2列; 一個ComboBox和一個TextBox。

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

這樣,UserDeletingRow事件就不會觸發,因為DataGridView FAQ會說:“只有當當前單元格不在編輯模式下,AllowUserToDeleteRows屬性設置為true時,用戶才能刪除行”。

作為解決方法,我在RowHeaderMouseClick中實現了此代碼

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

在grid1的情況下,我傳遞CheckBox列的名稱,並在按下DEL時觸發UserDeletingRow事件。 但是,對於grid2傳遞ComboBox列的名稱不會觸發該事件。

我嘗試了以下方法:
1-選擇RowHeaderCell->異常,因為無法選擇它。
2- grid.EndEdit()->沒有效果。
3-將SelectionMode更改為FullRowSelect,然后返回RowHeaderSelect->單元格設置為編輯模式。

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

編輯(問題的簡短形式):
單擊RowHeader會選擇該行並將第一個單元格置於編輯模式(如果適用),通過這種方式單擊DEL按鈕將刪除該單元格內容,並且不會觸發UserDeletingRow事件。 解決方法是,選擇一個不能置於編輯模式的單元格(如可用),例如CheckBoxColumn。

這是單擊RowHeader的默認行為嗎? 如果是,您可以告訴我解決方法嗎? 如果否,您能指出我這種現象的原因嗎?

編輯2:
我發現將EditMode設置為EditOnEnter會使單擊RowHeader將第一個單元格置於編輯模式。 我將嘗試克服這一問題,但會有所幫助。

可惜我還不能發表評論(因為代表的東西等等!)而且您不清楚您想做什么。

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

如果要刪除行而不選擇行標題,請考慮使用“全行選擇”而不是“行標題選擇”。

我在http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/cab3c9eb-4c86-475e-8cbd-dee6b235765a中找到了答案。 一種解決方法是在單擊RowHeader時將EditMode更改為EditOnEnter之外的其他模式,然后再將其更改回EditOnEnter。

我要感謝@ M2X,因為他的評論很有幫助。

暫無
暫無

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

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