2009-11-15 6 views

Répondre

3

Ignore tous, mais les chiffres

Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress 
    e.Handled = Not Char.IsDigit(e.KeyChar) 
End Sub 
+2

Que faire si l'utilisateur clique avec le bouton droit sur la zone de texte et colle du texte? –

0

e.Handled = Non Char.IsDigit

+1

@Lala: ceci n'est pas compilé tel quel ... –

6

remplace la zone de texte avec une autre commande une option? Dans mon expérience, j'ai trouvé le contrôle NumericUpDown plus facile à utiliser si vous voulez restreindre l'entrée aux valeurs numériques seulement.

Il a aussi de jolies flèches haut et bas, mais le meilleur de tous, il ne nécessite pas de code supplémentaire.

+3

Limite également la confusion de l'utilisateur. Ils ne sont pas surpris quand ils ne peuvent pas saisir n'importe quoi. –

2

Les clés de filtrage garantissent à peine que l'utilisateur saisira un nombre valide. Un intervalle de temps de 0 n'est probablement pas bon. Vous ne filtrerez pas l'entrée lorsque l'utilisateur a appuyé sur Ctrl + V. Et en tant que programmeur, je suis partial pour les programmes qui acceptent 2E3 comme entrée valide.

L'événement de validation a été créé pour résoudre ce problème. Déposez deux zones de texte sur un formulaire et un ErrorProvider:

Private Sub TextBox1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating 
    If TextBox1.Text.Length = 0 Then Exit Sub 
    Dim value As Double 
    If Not Double.TryParse(TextBox1.Text, value) or value <= 15 or value > 1E6 Then 
     TextBox1.SelectAll() 
     ErrorProvider1.SetError(TextBox1, "Not a valid number") 
     e.Cancel = True 
    Else 
     TextBox1.Text = value.ToString("N0") 
     ErrorProvider1.SetError(TextBox1, "") 
     Timer1.Interval = CInt(value) 
    End If 
    End Sub 
0

Vous pouvez filtrer les clés spécifiques. Cette méthode autorisera uniquement les nombres, supprimer, retour arrière, flèche gauche et flèche droite

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

      If Not (e.KeyValue = 8 Or e.KeyValue = 46 Or e.KeyValue = 48 Or e.KeyValue = 49 Or e.KeyValue = 50 Or e.KeyValue = 51 Or e.KeyValue = 52 Or e.KeyValue = 53 Or e.KeyValue = 54 Or _ 
       e.KeyValue = 55 Or e.KeyValue = 56 Or e.KeyValue = 57 Or e.KeyValue = 96 Or e.KeyValue = 97 Or e.KeyValue = 98 Or e.KeyValue = 99 Or _ 
       e.KeyValue = 100 Or e.KeyValue = 101 Or e.KeyValue = 102 Or e.KeyValue = 103 Or e.KeyValue = 104 Or e.KeyValue = 105 Or e.KeyValue = 37 Or e.KeyValue = 39) Then 

       e.SuppressKeyPress() = True 

      End If 
    Catch ex As Exception 
      'error handling 
    End Try 
Questions connexes