無効な値が入力されるのを防ぎたい場合は、EditingControl.KeyPress
イベントを処理できます。以下サンプルコード。ただし、不完全な値を許可するように正規表現を変更する必要があります。また、グリッドにデータを取得する他の方法 (コピー ペーストなど) があるため、適切な検証を使用する必要があります。
private string pattern = "^[0-9]{0,2}$";
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
dataGridView1.EditingControl.KeyPress -= EditingControl_KeyPress;
dataGridView1.EditingControl.KeyPress += EditingControl_KeyPress;
}
private void EditingControl_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar))
{
Control editingControl = (Control)sender;
if (!Regex.IsMatch(editingControl.Text + e.KeyChar, pattern))
e.Handled = true;
}
}