在vb6上创建一个个性化的蒙版文本框,混合一些字母和数字

时间:2014-12-18 18:26:35

标签: vb6

当用户按下该键时,我需要创建一个文本框:

[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文本框中格式化它。你能救我吗?

1 个答案:

答案 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