我正在编写一个 C# 条形码应用程序。我有一个 EAN-13 正则表达式来检测“Form1_KeyPress”函数中的条形码。我没有机制来检测输入来自哪里。这是我的问题:
我的表单中有一个重置按钮,可以清除 dataGridView 中列出的所有字段和条形码。当我点击它时,它会像平常一样获得焦点。当它具有焦点时,如果我通过条形码扫描仪读取条形码,则每个条形码读取末尾的换行符都会导致单击此按钮,从而清除所有字段。因此,读取的条形码被添加到 dataGridView 中,但由于重置按钮的激活而立即被删除。
我当前的解决方案是专注于每个“button_Click”函数末尾的只读文本框,但我不想在按钮的每个“click”函数末尾编写不相关的行。你有什么建议吗? (顺便说一句,我无法阻止在表单的 keydown 功能中抑制 Enter 键)
您无法捕获表单击键事件中的 Enter 键,因为它是由按钮处理的。
如果您添加:
private void button_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.IsInputKey = true;
}
}
到一个按钮,那么 Enter 键不会导致该按钮被单击,并且您将看到它的 Form_KeyDown 事件。
您不想将其添加到每个按钮,因此创建一个简单的 UserControl,它只是添加了此代码的按钮。
Update
这对空格键不起作用。如果你设置form.KeyPreview = true
并添加:
private void form_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
e.Handled = true;
}
}
那么空格键不会按下按钮,但它仍然可以在文本框中使用。
我不知道为什么 Space 和 Enter 的行为不同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)