我正在编写一个C#条形码应用程序。我有一个EAN-13正则表达式来检测“Form1_KeyPress”函数中的条形码。我没有机制来检测输入来自何处。这是我的问题:
我在表单中有一个重置按钮,用于清除dataGridView中列出的所有字段和条形码。当我点击它时,它会正常聚焦。当它具有焦点时,如果我通过条形码扫描仪读取条形码,则每个条形码读取结束时的换行符会导致单击此按钮,从而清除所有字段。所以读取的条形码被添加到dataGridView,但由于激活了重置按钮而立即被删除。
我目前的解决方案是专注于每个“button_Click”函数末尾的只读文本框,但我不想在按钮的每个“单击”功能结束时写一条不相关的行。您有什么推荐的吗? (顺便说一句,我无法阻止surpress在表单的keydown函数中输入键)
答案 0 :(得分:1)
您无法在表单的按键事件中捕获Enter键,因为它是由按钮处理的。
如果你添加:
private void button_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.IsInputKey = true;
}
}
到一个按钮,然后按Enter键不会导致单击该按钮,您将看到一个Form_KeyDown事件。
您不希望将其添加到每个按钮,因此创建一个简单的UserControl,它只是添加了此代码的按钮。
<强>更新强>
这对空格键不起作用。如果您设置form.KeyPreview = true
并添加:
private void form_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
e.Handled = true;
}
}
然后空格键不会按下按钮,但它仍然可以在文本框中工作。
我不知道为什么Space和Enter表现不同。