条形码扫描采用 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);
}
}
我正在尝试制作一个从 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);
}
}