DataGridのセルで数字のみ入力可能にするには、DataGridTextBoxColumnのTextBoxのKeyPressイベントをハンドリングする方法がWebにはたくさん掲載されているが、ゴリゴリ、プログラムを組まなくても、DataGridTextBoxColumnのFormatプロパティに0000等の書式フォーマットを設定するのみで実装可能である。
詳しくは、画像をご覧下され。
一応、プログラムでKeyPressイベントをハンドルする方法のサンプルも載せます。
以下、ソース。
Private Sub Form_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' ***********************************************
' DataGrid2の工程番号・工数は、数字のみ入力可とする
' ***********************************************
' KeyPressイベントハンドラを追加
DataGridTextBoxColumn21.TextBox.ImeMode = ImeMode.Off
DataGridTextBoxColumn24.TextBox.ImeMode = ImeMode.Off
AddHandler DataGridTextBoxColumn21.TextBox.KeyPress, AddressOf dgtb_KeyPress
AddHandler DataGridTextBoxColumn24.TextBox.KeyPress, AddressOf dgtb_KeyPress
End Sub
#Region "DataGrid2上でのKeyPressイベントハンドラ"
Private Sub dgtb_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs)
' 0-9の文字と各種システムキーのみを許可する
Select Case e.KeyChar
Case "0"c To "9"c ' 0 ~ 9
Case Chr(Keys.Back), "."c ' BSキー, 小数点キー
Case Else
e.Handled = True
End Select
End Sub
#End Region
こんなん書くより、GUIでプロパティ設定で済む方が楽やろ…ちなみにコーディングですると、全角で入力すると、数字以外の文字列も入っちゃうんだよね~それに比べてプロパティ設定のほうは、書式設定だから、数値以外は入力しても消えるんです☆彡
詳しくは、画像をご覧下され。
一応、プログラムでKeyPressイベントをハンドルする方法のサンプルも載せます。
以下、ソース。
Private Sub Form_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' ***********************************************
' DataGrid2の工程番号・工数は、数字のみ入力可とする
' ***********************************************
' KeyPressイベントハンドラを追加
DataGridTextBoxColumn21.TextBox.ImeMode = ImeMode.Off
DataGridTextBoxColumn24.TextBox.ImeMode = ImeMode.Off
AddHandler DataGridTextBoxColumn21.TextBox.KeyPress, AddressOf dgtb_KeyPress
AddHandler DataGridTextBoxColumn24.TextBox.KeyPress, AddressOf dgtb_KeyPress
End Sub
#Region "DataGrid2上でのKeyPressイベントハンドラ"
Private Sub dgtb_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs)
' 0-9の文字と各種システムキーのみを許可する
Select Case e.KeyChar
Case "0"c To "9"c ' 0 ~ 9
Case Chr(Keys.Back), "."c ' BSキー, 小数点キー
Case Else
e.Handled = True
End Select
End Sub
#End Region
こんなん書くより、GUIでプロパティ設定で済む方が楽やろ…ちなみにコーディングですると、全角で入力すると、数字以外の文字列も入っちゃうんだよね~それに比べてプロパティ設定のほうは、書式設定だから、数値以外は入力しても消えるんです☆彡