我在DataGridView
中託管一個自定義編輯控件,其中記錄爲TextBox
和Button
,共同爲UserControl
。我已經從DataGridViewColumn
繼承了新列,並且DataGridViewTextBoxCell
繼承了新單元格。在進入編輯模式時捕獲第一個字符 - 在DataGridView中自定義編輯控件
與正常DataGridViewTextBoxCell
,如果按一個鍵時,細胞具有焦點,它將開始編輯模式和您輸入的字符會出現在TextBoxEditingControl
。但是,在我繼承的單元格中,按鍵上沒有任何值被傳遞。 (實際上,您必須手動傳遞InitializeEditingControl
中的當前單元格值,否則根本不會顯示任何內容。)因此,鍵入的第一個字符(即開始編輯模式的那個字符)將丟失。
我試過OnKeyPress
,OnKeyDown
和OnKeyUp
在DataGridViewCell
但他們永遠不會被調用。然而,KeyEntersEditMode
似乎確實被調用,並且只有當它正在檢查按下的按鍵時,所以這可能是一個開始的好地方。問題就變成了如何將KeyEventArgs轉換爲char
。這對於字母和數字來說是微不足道的,但由於並非所有的鍵盤都是相同的,所以處理其他鍵最好是混亂和複雜的。如果有一個轉換器類會自動執行此操作,請賜教。
是否有其他人遇到此問題或找到了很好的解決方法?
注意:此問題適用於EditMode
設置爲EditOnKeystroke
的任何變體。設置爲EditOnEnter
是我的項目的有效解決方法,但我想模擬TextBoxEditingControl
的默認行爲。
UserControl是否從DataGridView中獲取傳遞給它的按鍵? – 2009-07-01 06:40:44