当用户按下该键时,我需要创建一个文本框:
[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}
一个有效的例子是:
63CDB75C-D58A-4100-8C24-9E6433E263B0
用户只能在8-4-4-4-12组的总数位上按A..F和0..9。
但我不知道如何在vb6文本框中格式化它。你能救我吗?
答案 0 :(得分:1)
简单的方法是检查KeyPress事件并确定密钥是否有效。看来你有一个定义良好的格式,所以我在表单中添加了一个文本框,并将其最大长度设置为36.我在KeyPress事件中添加了代码来检查有效密钥。我还在Changed事件中添加了代码,以将连字符附加到当前文本,而不是让用户输入它。当然这很简单,所以你可能需要添加它才能专门为你工作。例如,现在您无法使用 Ctrl + V 粘贴到文本框中。此外,当前不允许使用连字符键,因此如果删除连字符,则必须重新开始连字符。此外,没有错误处理程序。
Private Sub Text1_Change()
If Len(Text1.Text) = 8 _
Or Len(Text1.Text) = 13 _
Or Len(Text1.Text) = 18 _
Or Len(Text1.Text) = 23 Then
Text1.Text = Text1.Text & "-"
Text1.SelStart = Len(Text1.Text)
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase$(Chr$(KeyAscii))) 'force all characters to upper case
Select Case KeyAscii
Case 8, 48 To 57, 65 To 70 '8 is the backspace, 48 to 57 is 0 to 9, 65 to 70 is A to F
Case Else
KeyAscii = 0 'Cancel the key
End Select
End Sub