我尝试在texbox_texchanged事件上显示一条简单的消息。 为什么在这种情况下MsgBox没有显示?
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MsgBox("Hello") ' Showing
End Sub
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
If TextBox1.Text.Length = 13 Then
MsgBox("coucou") ' Not showing
End If
End Sub
End Class
答案 0 :(得分:3)
所以字符串如下:3463521331072 \ n
不利用扫描仪发送的\ n字符是错误的。这是一个非常可靠的输入结束指标。当您使用[vb.net]标记时,为什么用C#表示法记录它并不是很清楚。所以我会忽略它,使用文本框'KeyDown事件来检测它:
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyData = Keys.Enter Then
ProcessInput(TextBox1.Text)
TextBox1.SelectAll()
e.SuppressKeyPress = True
End If
End Sub
请注意您必须添加的ProcessInput()方法来处理扫描的字符串。并注意SelectAll()如何非常重要,它确保下一个扫描数据替换文本。你也可以考虑TextBox1.Text = String.Empty,这样更安全,但是你必须在其他地方显示扫描的字符串,比如Label。您还必须确保文本框始终具有焦点,以便字符串最终进入该控件,必要时使用其Focus()方法。