首页 > 解决方案 > 在触发 _Change 事件之前验证 TextBox

问题描述

我有一个表格,TextBox上面有 3 个控件:股票代码、数量、证书编号。股票代码TextBox设置为在加载表单时自动聚焦。

我还在我的 PC 上附加了一个条形码扫描仪,因为用户希望能够扫描条形码以填充TextBox,或手动输入数据。

被扫描的标签包含两个条形码。一个是证书编号,另一个是股票代码。

股票条形码的前缀是“SBC/”,而证书条形码的前缀是“C/”。

当用户扫描条形码时,如果TextBox焦点是股票代码TextBox,那么我想运行如下检查。

Private Sub txtStockCode_Change()

On Error GoTo errError1

If Len(txtStockCode.Text) >= 5 Then
    If bChangeCode Then
        If Left(txtStockCode.Text, 2) = "C/" Then
            msgbox "You have scanned the certificate barcode; please scan the stock barcode."
            txtStockCode.Text = ""
        Else
            bChangeCode = False
            txtStockCode.Text = Replace(txtStockCode.Text, "SBC/", "")
            txtStockCode.Text = Replace(txtStockCode.Text, "*", "")
        End If
    End If
End If

Exit Sub

假设目前的重点是股票代码TextBox

如果扫描股票条形码,则应发生以下情况:

例如“SBC/A12-TR0*”变成“A12-TRO”

但是,无论将哪个代码扫描到股票代码TextBox中,都不会验证该值。

例如,“SBC/A12-TR0*”保留为“SBC/A12-TR0*”,“C/29760”保留为“C/29760”

由于证书中的验证码相同,TextBox因此重复相同的模式,反之亦然。

为什么我的值没有更新,或者如何在_Change触发之前验证输入?

编辑

我现在已将代码更改为

Private Sub txtStockCode_Change

   If txtStockCode.Text <> "" Then
      txtStockCode.Text = Replace(txtStockCode.Text, "SBC/", "")
      txtStockCode.Text = Replace(txtStockCode.Text, "*", "")
   End If

End Sub

但它仍然显示 SBC/ 的前缀,但正在删除两个 * 字符(在条形码的开头和结尾,扫描仪将其读取为条形码)

标签: stringvalidationtextboxvb6

解决方案


您可以尝试将条形码阅读器设置为在扫描的条形码末尾返回 Enter 键,然后使用 Keypress 事件对其进行检查并进行更改。

Sub txtStockCode_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
        If Len(txtStockCode.Text) >= 5 Then
            If bChangeCode Then
                If Left(txtStockCode.Text, 2) = "C/" Then
                    msgbox "You have scanned the certificate barcode; please scan the stock barcode."
                    txtStockCode.Text = ""
                Else
                    bChangeCode = False
                    txtStockCode.Text = Replace(txtStockCode.Text, "SBC/", "")
                    txtStockCode.Text = Replace(txtStockCode.Text, "*", "")
                End If
            End If
        End If        
    End If
End Sub

推荐阅读