|
分類:[C#]
特定の列で入力制限を行おうと下記のようなプログラムを作っています。 datagridview1の中にコンボボックスがありEditingControlShowingの部分で、 テキストボックス型であるときのみTextEditCtrl_KeyPressイベントの関連付けを行っているのですが、 今のままでは関連付けを行っていない場合ができてしまいCellEndEditイベント時にエラーが起きてしまいます。 CellEndEditイベント時にセルがテキストボックス型かどうかの判別は行えないのでしょうか。
private void datagridview1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is DataGridViewTextBoxEditingControl) { TextEditCtrl = (DataGridViewTextBoxEditingControl)e.Control; TextEditCtrl.KeyPress += new KeyPressEventHandler(TextEditCtrl_KeyPress); } } private void TextEditCtrl_KeyPress(object sender, KeyPressEventArgs e) { switch (colNumber) { case 3: case 4: case 5: case 7: if ((e.KeyChar < (char)Keys.D0 || e.KeyChar > (char)Keys.D9) & e.KeyChar != (char)Keys.Back) { e.Handled = true; } break; default: break; } } private void datagridview1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { TextEditCtrl.KeyPress -= new KeyPressEventHandler(datagridview1_TextEditCtrl_KeyPress); }
|