2010-11-11 6 views
0

ma zone de texte ne prend que des valeurs numériques, de 0 à 255 (1 octet), comment puis-je empêcher l'utilisateur d'entrer le nombre> 255 ... le troisième chiffre doit être validé. En ce moment, mon code de validation lorsque vous sortez de la zone de texte et de montrer le message.Toute aide grandement appréciée.validation de zone de texte dynamique en C#

private void cor_o_gain_Validating(object sender, CancelEventArgs e) 
    { 
     try 
     { 
      int entered = int.Parse(cor_o_gain.Text); 
      if (entered > 255) 
      { 
       e.Cancel = true; 
       MessageBox.Show("Enter the number between 0 and 255"); 
      } 
     } 
     catch (FormatException) 
     { 
      // e.Cancel = true; 
     } 
    } 

Répondre

5

Vous pourriez envisager pas cela parce que c'est ennuyeux. Si un utilisateur tape "30" et change d'avis alors que le curseur se trouve avant le 3, il peut taper "40" puis appuyer deux fois sur delete. Votre application émet un bip et affiche une boîte de message.

Si vous devez valider pendant qu'il est en train de taper, pensez à mettre une étiquette à côté de son texte et à la mettre à jour pour lire "Entrée invalide" ou quelque chose de ce genre. Faites-le sur keypress, keyup ou keydown comme mentionné ailleurs.

+1

Annoying * et * facilement vaincu en tapant Ctrl + V. –

+0

oh ... ok alors comment restaurer la valeur précédente dans la zone de texte si le nombre entré est> 255, après avoir affiché le message ?? –

3

Vérifiez les événements clés; keypress, keydown, keyup etc.

+1

Vous pouvez également envisager des événements de type "Preview": PreviewKeyDown etc. –

2

Vous devez utiliser un lieu de contrôle NumericUpDown, et définir les valeurs min et max pour être à 0 et 255.

 
System.Windows.Forms.NumericUpDown n = new System.Windows.Forms.NumericUpDown(); 
n.Minimum = 0; 
n.Maximum = 255; 
1

Je dirais reconsidérer votre mise en œuvre. J'ai utilisé un logiciel conçu comme ça et c'est très agaçant. Il va probablement faire chier vos utilisateurs au fil du temps et ne fournir aucun réel avantage. Si vous devez absolument arrêter l'utilisateur au milieu de la frappe (encore une fois si vous DEVRIEZ), alors vous avez besoin d'un événement "d'action plus rapide" comme Keypress.

Cependant, il existe beaucoup d'implémentations "plus douces". Une option (pas la seule) serait de changer la couleur d'arrière-plan de la zone de texte et de rendre un message d'erreur visible pour l'alerte mais pas pour bloquer l'utilisateur que l'entrée est invalide. Cela permet à l'utilisateur de changer le texte sans être interrompu (par la boîte de message) tout en essayant de changer le texte.

Questions connexes