我想对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函数的代码没有运行
请提出任何想法
答案 0 :(得分:6)
您应该将Form
KeyPreview
proprety设置为 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
}
答案 1 :(得分:1)
只是为了让第一个答案变得简单。 1)转到表单的属性 2)将'KeyPreview'设置为'True' 3)在您的表格的按键事件:
private void Control_KeyPress(object sender, KeyPressEventArgs e)
{
//your code
}