string - 在触发 _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
。
如果扫描股票条形码,则应发生以下情况:
股票代码长度大于5
剩下5个字符不=“C/”,所以已经扫描到正确的代码
TextBox
更新文本值以删除所有 * 和“SBC/”前缀
例如“SBC/A12-TR0*”变成“A12-TRO”
和
证书编号长度大于 5
剩下 5 个字符do = "C/",所以扫描到了不正确的代码
MsgBox
给用户TextBox
值重置为“”
但是,无论将哪个代码扫描到股票代码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/ 的前缀,但正在删除两个 * 字符(在条形码的开头和结尾,扫描仪将其读取为条形码)
解决方案
您可以尝试将条形码阅读器设置为在扫描的条形码末尾返回 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
推荐阅读
- javascript - 无法与 amadeus 令牌生成 API 通信
- python - 在 Tensorflow 2.X 中测量 TFLite 模型的触发器
- node.js - 我有一个 json 文件,我想向它添加新字段
- c# - 使用匿名对象列表查询数组
- javascript - Javascript中的字符转义
- python - 使用 - < Dockerfile 构建 docker 映像时 COPY 指令出现问题
- .net - 在 Docker 中编译 .net 5 项目时不遵守复制目标
- python - 使用python从txt文件中提取行
- javascript - Vue3 vuex "TypeError: vuex__WEBPACK_IMPORTED_MODULE_1__.Store.commit is not a function"
- sql-server-2012 - SQL Server - 插入表太慢