gpt4 book ai didi

c# - 只允许特定字母到 DataGridView 单元格

转载 作者:行者123 更新时间:2023-11-30 16:31:24 26 4
gpt4 key购买 nike

我在表单上有一个数据 GridView 。网格中有 4 列 - No、Answer、Key、Result。不,键和结果列是只读的。这意味着我不会在这些列中输入一些数据。但我会在答案栏中输入值。值只能是 - A、B、C、D 和 E。例如,当我按下 X 键时,我不希望 X 显示在单元格中。我可以用带有按键事件的文本框来做到这一点。

现在你能告诉我,我如何使用答案列单元格事件的按键事件来实现它。

最佳答案

您可以使用 DataGridViewEditingControlShowing 事件来完成此操作。

在此事件的事件处理程序中,您可以访问在数据网格中输入数据时显示的文本框
这意味着,此时,您可以将事件处理程序附加到显示的文本框的 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 将始终为网格中使用文本框的每个单元格“共享”文本框控件,因此您应该检查是否是第一次引发该事件。
如果您在 DataGridView 中有其他非只读的列,并且您也希望用户在其中输入数据(不受约束),那么这种方法就不太适合。 (除非您在 OnKeyPress 事件处理程序中检查当前单元格属于哪一列)。

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

关于c# - 只允许特定字母到 DataGridView 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4920811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com