条形码扫描采用 1 个字符而不是一整套字符串

Barcode Scan taking 1 character instead of a full set of String

我正在尝试制作一个从 USB 扫描仪扫描条形码的应用程序。该应用程序应该从条形码中寻找与代码相对应的工作。我目前的问题是,当我试用该应用程序时,它只需要 1 个字符并尝试查找与该字符对应的工作,而不是让我输入整个字符串并按回车键。

这是我的代码:

public void SearchJob(object sender, EventArgs e)
{
    this.ChangeCurrentEntity(this.Manager.GetEntity(j => j.Code == this.TypedView.BarcodeNumber)?.FirstOrDefault());
    
    this.LoadView();
    
    if (this.confirmation.GetConfirmation())
    {
        var tokenSource = new CancellationTokenSource();
        this.task = Task.Run(() => { }, tokenSource.Token);
    
        if (!task.IsCompleted)
            tokenSource.Cancel();

        if (dcConfig.CancelCode == "CancelCode")
        {
            this.Host.CloseHost();
        }
    }

    this.TypedView.BarcodeNumber = "";
}

getConfirmation()是一个确认工作的popUp,我认为目前与我的问题无关。

这是我的表格:

private void JobNumberTextBox_TextChanged(object sender, EventArgs e)
{
    JobEntered?.Invoke(this, e);
}

如有任何帮助,我们将不胜感激。

您正在等待错误的事件。您需要等待 KeyPress 事件

private void JobNumberTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if(e.KeyChar == (char)Keys.Return)
    {
        e.Handled = true;
        JobEntered?.Invoke(this, e);
    }
}

Side note: most barcode scanners can be configured to add an Enter key after a scan

我想我的问题已经解决了。

我删除了我的文本更改功能并将其替换为 Keydown 功能,这样当我按下 enter 事件以搜索工作触发器时(这样我就可以输入完整的字符串)。我还将我的 Keydown 与我的 TextBox 绑定了。

private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                JobEntered?.Invoke(this, e);

                
            }
        }