Разрешить только определенные символы в строке в vb6 - PullRequest
2 голосов
/ 12 декабря 2011

Я хочу сделать только предопределенные символы, чтобы их можно было использовать в моем текстовом поле в vb6. Как я могу достичь этого?

Предопределенные символы будут похожи на 0-9 и A, C, M, E всех других символов, кроме этих, в качестве сообщения об ошибке будет указано msgbox. это также может быть a,c,m,e я могу использовать Ucase() для ее решения.

Ответы [ 3 ]

7 голосов
/ 12 декабря 2011

Вы можете;

private Sub atextbox_KeyPress(keyascii As Integer)
   if InStr(1, "0123456789ACME", Chr$(keyascii)) = 0 Then keyascii  = 0 '//case sensitive
End Sub

или

if Chr$(keyascii) like "[0-9]" or Chr$(keyascii) like "[ACMEacme]"

в альтернативном формате

select case true
    case chr$(keyascii) like "[0-9]"
    case chr$(keyascii) like "[ACMEacme]"
    case else
        keyascii = 0
end select
5 голосов
/ 12 декабря 2011

Вы можете обнаружить каждый введенный символ, используя событие KeyPress и проверяя значение ASCII. Если вы установите его на 0, нажатие будет игнорироваться. Не забудьте также отметить событие Change, чтобы перехватить вставку и т. Д.

Кроме того, не используйте окно сообщения, так как это будет раздражать пользователей.

2 голосов
/ 12 декабря 2011

Используйте событие KeyPress :

Private Sub txtBox_KeyPress(KeyAscii As Integer)
    Dim KeyChar As String
    If KeyAscii > 31 Then 'ignore low-ASCII characters like BACKSPACE
        KeyChar = Chr(KeyAscii)

        If Not IsAllowed(KeyChar) Then
          KeyAscii = 0
          MsgBox.Show("The allowed characters are ... ")
        End If
    End If
End Sub

Функция IsAllowed будет содержать разрешенные коды клавиш.

...