我有一個的DataGridView綁定到數據表具有定義爲整數 1個+ 16列。DataGridView的細胞編輯問題與十進制/十六進制格式
默認的單元格樣式是十六進制的2位數字(.Format="X2"
)。
當進入單元格編輯時,我想向用戶提供寫入十進制或十六進制值的可能性。
- 十六進制可以寫成像,例如,0×00,0X01,X02,XFF
- 小數像0,1,2,15
爲此,在EditingControlShowing我添加「 0X」到TextBox值
Private Sub BankGrid_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs)
Dim grid As DataGridView = DirectCast(sender, DataGridView)
If Not TypeOf e.Control Is TextBox Then Return
Dim tb As TextBox = DirectCast(e.Control, TextBox)
tb.Text = "0x" & tb.Text
RemoveHandler tb.KeyPress, AddressOf TextBox_KeyPress
AddHandler tb.KeyPress, AddressOf TextBox_KeyPress
End Sub
而在TextBox_KeyPress子我執行所有輸入filteri以避免無效輸入。
我不明白的是我可以附加哪些事件來檢測編輯完成時。我想對面的EditingControlShowing,以便我可以刪除「0x」,但我沒有找到它。
CellValueChanged來得太晚了我的情況,這是seemes CellValueChanging不存在 – Drake 2010-06-17 12:48:58
@ marco.ragogna對不起,我正在查看DevExpress版本的datagridview。我會經歷可以使用datagridview的可能的actionlisteners。例如有一個「CellBeginEdit」和一個「CellEndEdit」可能會有所幫助。 – Kyra 2010-06-17 14:01:05
沒問題,我以前用DevExpress工作過,很不錯的產品:)我找到了一個解決方案,謝謝 – Drake 2010-06-17 14:23:32