VB.net Besoin de Zone de Texte pour n'Accepter que les Numéros de
Je suis assez nouveau à l'VB.net (autodidacte) et me demandais juste si quelqu'un pourrait m'aider avec un peu de code. Je ne suis pas en train de faire quelque chose de trop impliqué, il suffit d'avoir un TextBox
qui accepte une valeur numérique de 1 à 10. Je ne veux pas qu'il accepte une chaîne de caractères ou un nombre supérieur à 10. Si quelqu'un tape un mot ou un caractère un message d'erreur apparaîtra, lui disant d'entrer un numéro de série valide. C'est ce que j'ai; évidemment, ce n'est pas grand, comme je vais avoir des problèmes. Merci encore à tous ceux qui peuvent aider.
If TxtBox.Text > 10 Then
MessageBox.Show("Please Enter a Number from 1 to 10")
TxtBox.Focus()
ElseIf TxtBox.Text < 10 Then
MessageBox.Show("Thank You, your rating was " & TxtBox.Text)
Total = Total + 1
ElseIf IsNumeric(TxtBox.Text) Then
MessageBox.Show("Thank you, your rating was " & ValueTxtBox.Text)
End If
ValueTxtBox.Clear()
ValueTxtBox.Focus()
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire avec l'utilisation de l'Ascii entiers. Mettez ce code dans la zone de texte de l'événement Keypress.
e.KeyChar
représente la touche est enfoncée. Et le de la fonction intégréeAsc()
, il se transforme en son Ascii entier.C'est ce que j'ai fait afin de gérer à la fois les clés d'entrée et de copier/coller.
Si vous souhaitez autoriser les décimales, ajouter
à l'instruction if de l'événement KeyPress section.
Essayez ceci:
Vous devez d'abord valider si l'entrée est en fait un entier. Vous pouvez le faire avec
Integer.TryParse
:Vous pourriez éviter de code en utilisant un contrôle NumericUpDown plutôt que d'une zone de texte, automatiquement, cela permet uniquement de nombres et a un max et min.
Il permet également d'accéder au directement avec
NumericUpDown1.Value
ainsi que l'utilisation des flèches haut et bas pour définir le nombre.Aussi, si un nombre élevé/par dessus le max est entré il va passer à la plus proche nombre autorisé.
Cette option vous permet d'utiliser la touche supprimer et définir les points décimaux
Je sais que ce post est vieux, mais je voulais partager quelque chose que j'ai mis en œuvre à son tour une zone de texte dans ce que j'appelle un IntBox.
Vous devez d'abord faire une extension avec:
Puis faire un événement TextChanged sous:
Alors à chaque fois que l'utilisateur saisit du texte, il évalue la chaîne de caractères et retourne uniquement les valeurs numériques qui sont dans les limites d'une norme Entier. Avec le caractère" -", vous pouvez modifier le nombre entier positif et négatif et d'en revenir.
Si quelqu'un voit tout ce qui peut améliorer ce code faites le moi savoir mais mes tests montrent cela fonctionne fantastique de faire un IntBox.
EDIT:
J'ai trouvé une autre méthode qui peut fonctionner que si vous utiliser les propriétés dans votre code. (À noter qu'il aura besoin d'une propriété séparée par zone de texte)
D'abord créer la propriété:
Puis faire la liaison dans la fenêtre de votre classe principale:
Voici enfin la ToInteger Extension de Code que j'ai mis en place:
Avec tous ces combinés à chaque fois qu'ils tapez quelque chose dans la boîte, il agira comme s'il s'agissait d'une zone de texte, mais quand ils changent de concentrer les ToInteger extension de définir la valeur d'un nombre entier en la propriété et le retourner à la zone de texte.
Sens que si l'opérateur est entré "-1w3" après que les modifications de focus, il sera de retour en tant que "-13" automatiquement.
Cela peut être trop tard, mais pour d'autres nouvelles de sang sur VB, voici quelque chose de simple.
Tout d'abord, dans tous les cas, sauf si votre application nécessite le blocage de l'utilisateur de la clé d'entrée est de toute façon pas une bonne chose à faire, les utilisateurs peuvent mal interpréter l'action en tant que problème sur le clavier matériel et en même temps ne peut pas voir où leurs keypreesed entrée erreur vient de.
Ici est simple, permettre à l'utilisateur de librement le type de leur entrée puis intercepter l'erreur plus tard:
La plus simple jamais la solution pour zone de texte de Validation VB.NET
Tout d'abord, ajouter un nouveau code VB fichier dans votre projet.
ou appuyez sur Ctrl+Maj+Un
COPIE & COLLEZ code ci-dessous dans ce fichier et donnez-lui un nom approprié. (c'est à dire KeyValidation.vb)
Maintenant utiliser le code suivant à l'Événement Load du Formulaire ci-dessous.
Fait..!
Tout d'abord définir la zone de texte du
MaxLength
à 2 qui permettra de limiter la quantité d'entrée de texte dans votreTextBox
. Ensuite, vous pouvez essayer quelque chose comme ceci en utilisant laÉvénement KeyPress
. Puisque vous utilisez un 2 chiffres maximum (10) vous aurez besoin d'utiliser unKey
commeEnter
pour lancer la vérification.Vous Pouvez utiliser le code ci-dessous Textbox Événement Keypress:
Ce code autoriser uniquement les numéros et vous ne pouvez entrer qu'nombre entre 1 à 10.
Cela a fonctionné pour moi... juste effacer la zone de texte complètement non-numérique, les touches sont pressées.
Copie de cette fonction dans un module à l'intérieur de votre vb.net projet.
Puis utilisez cette fonction à l'intérieur de votre textbox_keydown événement comme ci-dessous:
Et oui. Il fonctionne à 100% 🙂
Vous pouvez utiliser le onkeydown Propriété de la zone de texte pour limiter sa valeur à des chiffres.
!(mot de code>=65) coche excludng Alphabets.
mot de code!=32 coche à l'exclusion de caractère d'Espace entre les chiffres.
Si vous voulez exclure les Symboles aussi d'entrer dans la zone de texte, puis d'inclure la condition ci-dessous aussi en "onkeydown" propriété.
Ainsi la zone de texte deviendra enfin
Explication:
Mot de code de 'a' est '65' et 'z' est '90'.
Les clés d' '90' à '222', qui sont d'autres symboles sont également pas nécessaire.
Code de touche pour la Touche 'Espace' est '32', ce qui n'est pas nécessaire.
Ensuite, une combinaison de touche Maj enfoncée et "Numéro" des clés (ce qui dénote Symboles) pas nécessaire. Mot de code pour '0' est '48' et '9' est '57'.
D'où tous ces éléments sont inclus dans la zone de texte de la déclaration elle-même qui donne le résultat souhaité.
Essayer et voir.
C'était ma dernière... Il obtient le tour de tous les type de questions aussi:
Ici est une zone de texte simple qui nécessite un nombre:
et voici la procédure qui corrige tous les mauvais d'entrée:
L'utiliser dans votre zone de texte de l'événement Keydown.
Copie de cette fonction dans un module à l'intérieur de votre vb.net projet.
Cela permettra à de tels chiffres 2/4 ou des chiffres comme de 3,5 à être entré dans la zone de texte si vous utilisez decim "nonNumberEntered(e,Textbox1, True)".
Permet uniquement de chiffres pour être entré dans la zone de texte si vous utilisez "nonNumberEntered(e,Textbox1, False)" ou "nonNumberEntered(e,Textbox1)".
J'ai eu une semblable exigence d'utilisation récemment pour un
TextBox
qui pourrait prendre seulement des numéros.À la fin, j'ai utilisé un
MaskedTextBox
au lieu d'unTextBox
. Vous définissez un "masque" pour la zone de texte et il n'acceptera que des personnages que vous avez défini - dans ce cas, les numéros de. L'inconvénient est qu'il laisse un peu d'un laid ligne à l'intérieur de laTextBox
;Ce que j'ai aimé à propos de l'
MaskedTextBox
c'était donc personnalisable. Si, pour quelque raison que ce soit vous vouliez unTextBox
pour accepter une entrée dans le format de 3 ints, suivi de 2 lettres, tout ce que vous devez faire est de définir laTextMask
à000LL
. Il y a une charge de masques pré-définis dans Visual Studio, et la documentation complète peut être trouvée ici.Maintenant, je sais que ce n'est pas complètement résolu votre problème, mais l'utilisation d'un
MaskedTextBox
enlève une grande partie de la complexité du problème. Vous pouvez maintenant garantir que le contenu de laMaskedTextBox
ne jamais être unInt
, vous permettant d'exécuter une simpleIf
déclaration afin de s'assurer que la valeur est=<10
Je sais que ce post est vieux, mais j'ai envie de partager mon code.
Sur chaque entrée dans la zone de texte (event - Poignées RestrictedTextBox.TextChanged), vous pouvez faire un essai à la caste entré du texte en entier, si une défaillance se produit, vous venez de réinitialiser la valeur du texte dans RestrictedTextBox à la dernière entrée valide (qui est constamment mise à jour en vertu de la temp1 variable).
Voici comment aller à ce sujet. Dans les sous qui se charge avec la forme (de moi.charge ou mybase.charge), d'initialiser temp1 à la valeur par défaut de RestrictedTextBox.Texte
À tout autre point dans le formulaire:
La bonne chose à ce sujet est que vous pouvez l'utiliser pour restreindre une zone de texte à n'importe quel type que vous souhaitez: double, uint, etc....
chaque zone de texte a un validation et validé événement que vous pouvez utiliser ensuite comme suit :-