使用条形码扫描仪时MsgBox不显示

时间:2015-09-04 08:22:42

标签: vb.net visual-studio

我尝试在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

1 个答案:

答案 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()方法。