7
votes

Comment puis-je autoriser seulement 0 ou 1 à être entré dans une zone de texte?

Comment puis-je limiter la commande de zone de texte pour permettre uniquement les valeurs 0 et 1?

merci. Et j'ai une autre question: comment puis-je désactiver la désactivation de texte de Presse-papiers dans mon contrôle de zone de texte?


6 commentaires

Je serais intéressé de connaître votre réponse à la question de Sean, car je ne peux franchement pas penser à un cas d'utilisation de moi-même.


J'ai présumé qu'il demandait à l'utilisateur une chaîne binaire, par exemple. 1001001


01010111 01101000 01101000 01100001 0110100100 00100000 01101001 01111001 01101111111111111111111111111111111111111100110011111111111111111111111111111111111100100100100100111111110010010010010010010010010010010010010010010010010010010010010010010010011001100110011111111111100110011 00111111


"Et si tu veux faire ça?" - Ce serait un cas parfait.


Je ne connais pas la génératriceyPetea, mais j'ai utilisé Leetkkey - un charmant add-on pour Firefox. :-)


01010111 01101000 01100101 01100101 00100001 00100000 01001111 01101110 01100101 01110011 00100000 01100001 01101110 01100100 00100000 01011010 01100101 01110010 01101111 01110011 00100000 01100111 01100001 01101100 01101111 01110010 01100101 00100001 00100000 00111010 00101101 00101001


3 Réponses :


1
votes

Vous voudrez peut-être voir la réponse à cette question connexe:

Validation d'entrée C # Entrée pour une zone de texte: flotter


0 commentaires

12
votes

à l'aide de l'événement keypress xxx

paramètre e.handled à true / faux indique si le caractère doit être accepté à la Boîte ou non.

Vous pouvez en savoir plus sur KeyPressEventargs sur MSDN.

NOTE

KEYS.DELETE doit couvrir les touches. .Backspace et autres boutons "arrière".


9 commentaires

Mieux ceci: e.handled = (e.keychar == Keys.d0) || (E.KeyChar == Keys.d1);


@Abatishchev - haha, intelligent. :-RÉ


@abatischev, n'oubliez pas le nombre de numéros. :)


Vous devriez également prendre soin de la backpace et supprimer


Touches directionnelles? languette? Et si elles veulent coller avec Ctrl + V?


@ ADAM0101: Essayez avant de demander;) KeyPress ne sera pas tiré sur la touche Supprimer, les flèches ou l'onglet. Oui, CTRL + C / CTRL + V bot fonctionnera, mais CNTRL + INS / SHIFT + INS sera.


@ Adam0101, a refactore un peu. Vous pouvez maintenant utiliser Suppr Key, BackSpace, 0, 1 Numpad 0 et 1.


Cliquez avec le bouton droit sur la zone de texte et sélectionnez Coller.


@Hans, en fait une solution consisterait à utiliser Supprimètre protégé Void WNDProc (réfé Message M) et vérifier les messages de pâte / copie. Mais alors vous devriez remplacer la zone de texte et faire cela. Une autre solution consiste à remplacer l'événement textchanged et à simplement ajouter une boucle qui vérifie chaque caractère et supprime les problèmes incorrects. Pour rendre l'exemple un peu simple, je ne l'ajouterai pas, il y a suffisamment d'informations dans ce dernier commentaire. :)



2
votes

Si vous souhaitez afficher les chiffres plutôt qu'un chèque ou quelque chose que vous voulez uniquement autoriser 0 ou 1, vous pouvez utiliser un numericupdown Contrôle et définissez min et à 0 max sur 1 max à 1 et pas sur 1 .

Si vous avez besoin d'une zone de texte, j'utiliserais la réponse de Filip, mais je définirais le maxlength de celui-ci pour éviter d'avoir à vous inquiéter de 00, 11 ou 01 ou des valeurs similaires. < / p>


1 commentaires

+1 - Je pense personnellement que c'est la meilleure réponse, vraiment. Et si vous le souhaitez comme une chaîne, utilisez bien .tostring () - et vous avez terminé. (et si petit code aussi!)