2013-05-23 2 views
0

Я нашел множество способов ограничить пользователей от ввода алфавитных символов, но я хочу быть более конкретным. Я делаю двоичный калькулятор, и я хотел бы, чтобы пользователь мог только заполнить цифры «0» и «1».Как только разрешить «0» и «1» помещаться в текстовое поле

+1

'OnKeyDown "если (ключ! = 0) && (ключ! = 1), то запретить"', так сказать? –

+0

О каком виде вы говорите? – Dima

+0

Приложение VB Windows Forms, использующее Visual Studio 2012. – user2399399

ответ

0

Применяется в случае textbox_keypress ..

Private Sub txtbox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtbox.KeyPress 
    Dim k As Byte = Asc(e.KeyChar)  

    If Not (e.KeyChar = "0" Or e.KeyChar = "1" Or k = 8 Or k = 13) Then e.Handled = True 

End Sub 
+0

Это прекрасно работает, спасибо, хотя я бы хотел, чтобы пользователь мог использовать обратное пространство. – user2399399

+0

@ user2399399: обновлено .... – matzone

+0

@ user2399399: Обновлено для Enter key ... – matzone

1

Хотя Есть много способов сделать это, мне нравится этот метод:

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress 
    Dim valid_values As String = "01" 
    If Not valid_values.Contains(e.KeyChar) Then 
     e.Handled = True 
    End If 
End Sub 
+0

Это наиболее удобный для обслуживания среди предлагаемых ответов, ИМХО. +1 – Neolisk

0

Это удостоверится клавиша нажата либо 0, либо 1. В противном случае он будет действовать, как если бы не были нажаты никакие клавиши.

Private Sub txtBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtBox.KeyDown 

If Not (e.KeyCode = Keys.0 OR e.KeyCode = Keys.1) Then 
    e.Handled = True 
EndIf 

End Sub