2012-10-21 16 views
5

Jestem nowym użytkownikiem Visual Basic i jestem pewien, jak wyłączyć znaki alfabetyczne i specjalne.Wyłączanie liter alfabetu i znaków specjalnych w Visual Basic.NET

I Chcę tylko, aby użytkownik mógł wprowadzać liczby.

Im przy użyciu tego kodu im wiedzieć, że istnieje prostszy sposób to zrobić i wszystkie pomoc jest mile widziana

pojawia się okno komunikatu, kiedy wejściowe znaków alfabetycznych i kiedy numery wejściowe. Nie chcę otrzymywać okna wiadomości, kiedy wprowadzam liczby.

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

    If (e.KeyCode = Keys.Enter) Then 

     e.SuppressKeyPress = True 

     If (e.KeyCode = Keys.A Or Keys.B Or Keys.C Or Keys.D Or Keys.E Or Keys.F Or Keys.G Or Keys.H Or Keys.I Or Keys.J Or Keys.K Or Keys.L Or Keys.M Or Keys.N Or Keys.O Or Keys.P Or Keys.Q Or Keys.R Or Keys.S Or Keys.T Or Keys.U Or Keys.V Or Keys.W Or Keys.X Or Keys.Y Or Keys.Z) Then 

      Beep() 
      MsgBox("Please Input A Numerical Value") 
      txtCustom.Text = "" 

     Else 

      RandNumAllow = txtCustom.Text 

     End If 

    End If 

End Sub 
+1

ten kod wydaje się działać tylko po wpisaniu klawisz Enter, w tym przypadku nie może być char list. Czy na pewno napisałeś odpowiedni kod? – Steve

+1

Nie ma nic bardziej irytującego niż program, który karze takiego użytkownika. To tak, jak przy niewielkim wstrząsie elektrycznym, użytkownik szybko się z tym uporał. Zamiast tego należy użyć zdarzenia sprawdzania poprawności i, powiedzmy, metody dziesiętnej.TryParse(), aby sprawdzić dane wejściowe. I ErrorProvider, aby dostarczyć subtelne wskazanie błędu. –

Odpowiedz

7

Spróbuj użyć zdarzenia KeyPress zamiast:

Private Sub TextBox1_KeyPress(sender As Object, _ 
           e As KeyPressEventArgs) Handles TextBox1.KeyPress 
    e.Handled = Not Char.IsNumber(e.KeyChar) 
End Sub 

Ale to nie zatrzyma kogoś z pomocą schowka. Prawdopodobnie lepiej jest użyć kontrolki MaskedTextBox.

+0

Zdecydowałem się użyć zamaskowanego pola tekstowego, dziękuję za pomoc, nie do końca tak, jak tego chciałem, ale dzięki temu było o wiele szybsze –

+0

To nie blokuje (koszulki + liczba) znaków specjalnych. – jcaruso

+0

Spowoduje to również wyłączenie usuwania i spacji, w jaki sposób można je włączyć? –

1

Przepraszamy za spóźnioną odpowiedź, kod ten rozwiąże wszystkie problemy, skopiuje ze schowka i zmieni numer + w przypadku znaków specjalnych, ponieważ używa zdarzenia TextChanged.

Dim charactersAllowed As String = "1234567890" 
     Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged 
    Dim theText As String = TextBox1.Text 
    Dim Letter As String 
    Dim SelectionIndex As Integer = TextBox1.SelectionStart 
    Dim Change As Integer 
    For x As Integer = 0 To TextBox1.Text.Length - 1 
     Letter = TextBox1.Text.Substring(x, 1) 
     If charactersAllowed.Contains(Letter) = False Then 
      SystemSounds.Beep.Play() 
      theText = theText.Replace(Letter, String.Empty) 
      Change = 1 
     End If 
    Next 
    TextBox1.Text = theText 
    TextBox1.Select(SelectionIndex - Change, 0) 
End Sub 

Można zastąpić wartość charractersAllowed ze znaków cokolwiek chcesz, aby

Powiązane problemy