我有一个条形码扫描应用程序,它运行在文本框的文本更改事件上。它会验证条形码先前是否已扫描到访问数据库中并按照用户身份验证用户身份。
我有一个问题,即文本框中看到的数字只是条形码读取的一位数(第一位数字)。
这是因为文本更改属性会立即验证吗?
代码如下
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox1.SelectAll();
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\dell\Documents\Database5.accdb;Jet OLEDB:Database Password=sudeep;");
con.Open();
try
{
// con.Open();
OleDbCommand cmd = new OleDbCommand("insert into barcode(id,dtime) values('" + textBox1.Text + "','"+label3.Text+"')",con);
cmd.ExecuteNonQuery();
label2.Text = "User Authenticated";
label2.ForeColor = Color.Green;
//MessageBox.Show("User Authenticated");
}
catch(Exception)
{
label2.Text = "User Already registered";
label2.ForeColor = Color.Red;
// MessageBox.Show(x.ToString());
}
请帮忙。
我认为问题在于文本框不会扫描条形码的字符串,因为文本更改事件属性只扫描一个字符并存储在数据库中。有没有办法从条形码中扫描字符串?
答案 0 :(得分:2)
通常这些条形码扫描仪会发送键盘事件,实际上会导致每个数字分别引发事件。
您应该看到条形码扫描器是否使用单独的键(例如回车键)终止扫描,而是捕获OnKeyDown事件。或者,如果条形码具有固定长度,您可以在对其进行操作之前检查TextBox.Text
属性的长度。
答案 1 :(得分:2)
你不想挂钩到按键,因为你会遇到刚才看到的问题。
相反,您需要找出扫描仪发送的其他内容。大多数时候扫描仪在数据之后发送CR / LF。这允许您在表单上有一个按钮,您可以将其指定为默认按钮,以接受“输入”键并从其onclick事件中运行逻辑。
“大多数”我的意思是你在市场上发现的每一台扫描仪都不是为了不这样做而定制的。