VB.NET扫码后自动插入数据到DataGridView的技术求助
VB.NET 扫码自动插入DataGridView解决方案
方法1:配置条形码扫描器自动发送回车(推荐)
大部分条形码扫描器支持配置扫描完成后自动追加回车键,无需修改代码,现有KeyDown事件即可自动触发插入操作。具体操作参考扫描器说明书,通常扫描特定设置条码就能开启该功能。
方法2:通过代码实现自动检测扫码完成
若无法修改扫描器配置,可通过文本框内容监听+定时器判断实现自动插入:
步骤1:添加定时器控件
在窗体上添加Timer控件(命名为tmrScanDetect),设置Interval为200毫秒(可根据扫描速度调整,100-300ms均可),并将Enabled设为False。
步骤2:编写代码
' 文本框内容变化时重启定时器 Private Sub txtScan_TextChanged(sender As Object, e As EventArgs) Handles txtScan.TextChanged tmrScanDetect.Stop() tmrScanDetect.Start() End Sub ' 定时器触发时执行插入逻辑 Private Sub tmrScanDetect_Tick(sender As Object, e As EventArgs) Handles tmrScanDetect.Tick tmrScanDetect.Stop() Dim scanText As String = txtScan.Text.Trim() If Not String.IsNullOrEmpty(scanText) Then ' 替换为你原有的DataGridView插入代码 DataGridView1.Rows.Add(scanText, DateTime.Now) txtScan.Clear() End If End Sub ' 保留回车触发逻辑(兼容手动输入) Private Sub txtScan_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles txtScan.KeyDown If e.KeyCode = Keys.Enter Then tmrScanDetect.Stop() Dim scanText As String = txtScan.Text.Trim() If Not String.IsNullOrEmpty(scanText) Then DataGridView1.Rows.Add(scanText, DateTime.Now) txtScan.Clear() e.Handled = True End If End If End Sub
原理说明
条形码扫描器输入速度远快于手动输入,通过定时器判断:当文本框内容停止变化超过设定时长,即判定扫码完成,自动执行插入操作。
内容的提问来源于stack exchange,提问作者Fatai Atoyebi
相关产品推荐
相关产品推荐

