2012-10-21 8 views
5

Im nuovo per visual basic e non so su come disabilitare caratteri alfabetici e speciali.Disattivazione di lettere alfabetiche e caratteri speciali in Visual Basic.NET

I Solo desidera che l'utente sia in grado di immettere numeri.

Im usando questo codice im sapere che c'è un modo più semplice per farlo e tutto l'aiuto è apprezzato

ottengo la finestra di messaggio quando ho ingresso caratteri alfabetici e quando i numeri di ingresso I. non voglio ottenere la finestra di messaggio quando inserisco i numeri.

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

Questo codice sembra funzionare solo quando si digita il tasto Invio e in quel caso il carattere non si poteva essere una lettera. Sei sicuro di aver pubblicato il codice giusto? – Steve

+1

Non c'è niente di più fastidioso di un programma che punisce l'utente in quel modo. È come applicare una piccola scossa elettrica, il tuo utente sarà presto stufo di esso. Utilizzare invece l'evento Validating e, ad esempio, Decimal.TryParse() per verificare l'input. E ErrorProvider per fornire una sottile indicazione di errore. –

risposta

7

provare a utilizzare il KeyPress invece:

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

ma questo non impedire a qualcuno di utilizzare il clipboard. Probabilmente è preferibile utilizzare il controllo MaskedTextBox.

+0

Ho deciso di utilizzare una casella di testo mascherata, grazie per l'aiuto, non è completamente come volevo ma grazie è stato molto più veloce –

+0

Questo non blocca (Shirt + un numero) caratteri speciali. – jcaruso

+0

Ciò disabiliterà anche l'eliminazione e lo spazio posteriore come possono essere abilitati? –

1

Siamo spiacenti per la risposta in ritardo questo codice risolverà tutti i problemi, copiando dagli appunti e shift + numero per caratteri speciali in quanto utilizza l'evento TextChanged provarlo.

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 

È possibile sostituire il valore di charractersAllowed con qualsiasi personaggi si desidera consentire