DataGridView
のEditingControlShowing
イベントを使用してこれを行うことができます。
このイベントのイベントハンドラでは、データグリッド内にデータを入力するたびに表示されるTextbox
にアクセスできます。
これは、この時点で、あなたが表示されているテキストボックスのKeyPress
イベントにイベントハンドラを添付することができますことを、意味:
private bool _firstTime = true;
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if(!_firstTime)
{
return;
}
_firstTime = false;
var t = e.Control as TextBox;
if(t != null)
{
t.KeyPress += OnKeyPress;
}
}
private void OnKeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar != 'A' && e.KeyChar != 'B' && e.KeyChar != 'C')
{
e.Handled = true;
}
}
DataGridViewのは、グリッド内のすべてのセルのため、常に「シェア」TextBoxコントロールをするので、テキストボックスを使用する場合は、初めてイベントが発生したかどうかを確認する必要があります。
DataGridViewに読み込み専用でない他の列があり、制約のないデータを入力する場合は、この方法は適していません。 (OnKeyPress
イベントハンドラを現在のセルが属する列にチェックインしない限り)。
(小文字のa、b、cも考慮する必要があります)