3

我想在datagridview c#中对一个单元格进行处理,当我按下一个单元格时,这个特征是打开一个表单。

在 C# 中没有允许我直接添加我的处理的事件(按键)

在网上搜索后,我找到了以下解决方案

 private void dGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        e.Control.KeyPress +=
        new KeyPressEventHandler(Control_KeyPress);
    }


           private void Control_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((Strings.Asc(e.KeyChar) >= Strings.Asc(Keys.A.ToString()) && Strings.Asc(e.KeyChar) >= Strings.Asc(Keys.Z.ToString())) || (Strings.Asc(e.KeyChar) >= Strings.Asc(Keys.D0.ToString()) && Strings.Asc(e.KeyChar) >= Strings.Asc(Keys.D9.ToString()) || (Strings.Asc(e.KeyChar) >= 97 && Strings.Asc(e.KeyChar) > 122)))
            {
                ------
            }
      }

但它不起作用。在调试事件 dGridView_EditingControlShowing 的代码已执行但 Control_KeyPress 函数的代码不运行

请有任何想法

4

2 回答 2

7

您应该将您的Form KeyPreview财产设置为true。你应该处理主窗体上的按键事件。那是因为Control.KeyPress事件

在控件具有焦点时按下某个键时发生。( msdn )

public Form()
{
    InitializeComponent();
    this.KeyPreview = true;
    this.KeyPress += new KeyPressEventHandler(Control_KeyPress);
}

private void Control_KeyPress(object sender, KeyPressEventArgs e)
{
    //your code
}
于 2013-04-05T14:20:41.330 回答
2

只是为了使第一个答案简单。1)转到表单的属性 2)将“KeyPreview”设置为“True” 3)在表单的 Key Press 事件中:

private void Control_KeyPress(object sender, KeyPressEventArgs e)
{
    //your code
}
于 2013-10-29T04:06:41.167 回答