注意:ここで紹介しているDataGridは、System.Windows.Forms名前空間のDataGrid(Windowsフォーム)です。System.Web.UI.WebControls名前空間のDataGrid(Webフォーム)ではありません。
「テキストボックスに数字しか入力できないようにする」と同じように、DataGridTextBoxColumn.TextBoxプロパティにより取得したTextBoxオブジェクトにKeyPressイベントハンドラを追加し、そのKeyPressイベントハンドラ内で処理するようにします。なお、「テキストボックスに数字しか入力できないようにする」に記した注意事項も必ずご覧ください。
次の例ではDataGrid1(DataGridオブジェクト)にDataTable1(DataTableオブジェクト、TableName="DataTable1")が連結されており、テーブルスタイルの設定はすでにされているものとし、一列目の列を数字のみ入力できるようにしています。(テーブルスタイルの説明は省かれています。分からないという方はこちらをご覧ください。)
Private Sub Form1_Load(sender As Object, e As System.EventArgs) _ Handles MyBase.Load 'テーブルスタイルの取得 Dim ts As DataGridTableStyle ts = DataGrid1.TableStyles("DataTable1") 'DataGridTextBoxColumnの取得 Dim cs As DataGridTextBoxColumn = _ CType(ts.GridColumnStyles(0), DataGridTextBoxColumn) 'TextBoxの取得 Dim tb As TextBox = cs.TextBox 'KeyPressイベントハンドラを追加 AddHandler tb.KeyPress, AddressOf tb_KeyPress End Sub Private Sub tb_KeyPress(sender As Object, e As KeyPressEventArgs) '0-9の文字のみを許可する If e.KeyChar < "0"c Or e.KeyChar > "9"c Then e.Handled = True End If End Sub
private void Form1_Load(object sender, System.EventArgs e) { //テーブルスタイルの取得 DataGridTableStyle ts; ts = DataGrid1.TableStyles["DataTable1"]; //DataGridTextBoxColumnの取得 DataGridTextBoxColumn cs = (DataGridTextBoxColumn) ts.GridColumnStyles[0]; //TextBoxの取得 TextBox tb = cs.TextBox; //KeyPressイベントハンドラを追加 tb.KeyPress += new KeyPressEventHandler(tb_KeyPress); } private void tb_KeyPress(object sender, KeyPressEventArgs e) { //0-9の文字のみを許可する if (e.KeyChar < '0' || e.KeyChar > '9') { e.Handled = true; } }