条码扫描器发送以换行符结尾的数据时,如何使按钮散焦

本文关键字:何使 按钮 数据 换行符 结尾 条码扫描器 | 更新日期: 2023-09-27 18:19:09

我正在编写一个c#条形码应用程序。我有一个EAN-13正则表达式来检测"Form1_KeyPress"功能中的条形码。我没有机制来检测输入来自哪里。我的问题是:

我有一个重置按钮的形式,清除在dataGridView中列出的所有字段和条形码。当我点击它时,它会正常对焦。当它有焦点时,如果我通过条形码扫描器读取条形码,则每次读取条形码末尾的换行符会导致单击该按钮,从而清除所有字段。因此条形码读取被添加到dataGridView,但立即删除由于激活重置按钮。

我目前的解决方案是将重点放在每个"button_Click"函数末尾的只读文本框上,但我不想在每个按钮的"click"函数末尾写一个无关的行。你有什么建议吗?(顺便说一下,我不能阻止表单的keydown功能中的回车键)

条码扫描器发送以换行符结尾的数据时,如何使按钮散焦

不能在表单的击键事件中捕获Enter键,因为它是由按钮处理的。

如果您添加:

private void button_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        e.IsInputKey = true;
    }
}

,然后回车键不会导致按钮被点击,你会看到一个Form_KeyDown事件。

你不想把这个添加到每个按钮上,所以创建一个简单的UserControl,它只是一个添加了这段代码的按钮。

空格键不起作用。如果设置form.KeyPreview = true并添加:

private void form_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Space)
    {
        e.Handled = true;
    }
}

则空格键不能按下按钮,但在文本框中仍然有效。

我不知道为什么空格键和回车键的行为不同