仅允许特定字母到DataGridView Cell

时间:2011-02-07 11:34:11

标签: c# winforms datagridview

我在表单上有一个datagridview。 并且网格中有4列 - 否,答案,键,结果。 否,键和结果列是只读的。 这意味着我不打算向这些列输入一些数据。 但我会在“答案”列中输入值。 值只能是 - A,B,C,D和E. 当我按下例如X键我不希望X在单元格中显示。 我可以使用带有按键事件的文本框来完成它。

现在可以告诉我,如何使用Answer列单元事件的按键事件来实现它。

1 个答案:

答案 0 :(得分:3)

您可以使用EditingControlShowing的{​​{1}}事件来完成此操作。

在此事件的事件处理程序中,只要您在数据网格中输入数据,就可以访问正在显示的DataGridView
这意味着,此时,您可以将事件处理程序附加到显示的文本框的Textbox事件中:

KeyPress

由于DataGridView将始终“共享”使用文本框的网格中每个单元格的文本框控件,因此应检查是否是第一次引发该事件。
如果DataGridView中的其他列不是只读的,并且您希望用户输入数据的位置(不受约束),那么这种方法将不合适。 (除非您在 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; } } eventhandler中检查当前单元格所属的列。)

(请注意,您还必须考虑小写字母a,b,c。