La détection ctrl+v sur la touche
Je suis en utilisant la zone de texte keypress
événement à ne traiter que les entrées sélectionnées. Fondamentalement, la textbox
permettre à l'utilisateur d'entrer des valeurs où il peut être calculé.
c'est à dire que vous pouvez taper (5*5)- (10/5)
.
La méthode actuelle vérifier comme Convert.ToChar("*")==e.KeyChar
etc...
À l'instant, il ne veut pas permettre à l'utilisateur de copier coller des valeurs.
Est-il de toute façon qui peut détecter la ctrl+v
sur keypress
événement?
Mise à jour
Ce que je fais en ce moment
static IEnumerable<char> ValidFiancialCharacters
{
get
{
if(_validFiancialCharacters==null)
{
_validFiancialCharacters = new List<char>();
_validFiancialCharacters.Add(Convert.ToChar("0"));
_validFiancialCharacters.Add(Convert.ToChar("1"));
_validFiancialCharacters.Add(Convert.ToChar("2"));
//till 9 and
_validFiancialCharacters.Add(Convert.ToChar("+"));
_validFiancialCharacters.Add(Convert.ToChar("-"));
_validFiancialCharacters.Add(Convert.ToChar("/"));
//and some other
}
return _validFiancialCharacters;
}
}
public static bool ValidateInput(KeyPressEventArgs e)
{
if (ValidFiancialCharacters.Any(chr => chr == e.KeyChar))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
return e.Handled;
}
Et dans le keypress
private void txtRate_KeyPress(object sender, KeyPressEventArgs e)
{
NumberExtension.ValidateInput(e);
}
Pourquoi travaillez-vous au niveau des touches? Ne pouvez-vous pas simplement évaluer
Je suis restreindre l'utilisateur à l'entrée de certaines valeurs. Autoriser uniquement certaines valeurs
textbox.Text
sur le changement, en laissant la responsabilité pour les clés et les copier / coller avec la zone de texte standard qui gère tout ça?Je suis restreindre l'utilisateur à l'entrée de certaines valeurs. Autoriser uniquement certaines valeurs
OriginalL'auteur | 2014-08-05
Vous devez vous connecter pour publier un commentaire.
Si vous avez besoin de gérer à la fois, peut être fait en utilisant la même approche
Ont un coup d'oeil à Codes De Clé. Vous pouvez détecter ce que jamais la touche pressée
donc..
Créer une liste contenant toutes les entrées que vous devez
et l'utilisation de la
KeyDown
événement et l'utilisation KeyEventArgs.SuppressKeyPress propriétéVous pourriez avoir besoin pour valider la copie collé de la valeur dans
leave event
, puisque l'utilisateur peut coller n'importe quoi!!!Il y a un problème avec
KeyDown
etSuppressKeyPress
que si vous voulez autoriser uniquement certaines touches, il supprime toutes les autres touches sur le niveau de forme. par exemple, Alt+F4OriginalL'auteur huMpty duMpty
Il suffit de regarder les Modificateurs de biens en vous
KeyDown
ouKeyUp
événement pourKeys.Control
Échantillon
KeyDown
ou KeyUp
Mise à jour
Pour autoriser uniquement certaines entrées, vous pouvez utiliser le
KeyPress
événement.Plus D'Informations
keyup
?Avez-vous essayé ?
J'ai à la fois les événements du moment. Donc, l'événement passer de
KeyDown
il échoue à partir de keypressPression de touche ne fonctionne pas pour la Touche CTRL enfoncée, utilisez KeyDown ou KeyUp.
Oui, je sais, mais le problème que j'ai est d'autoriser que certains autres personnages avec
ctrl+v
. c'est à dire tous les nombres, et une autre entrée comme+,-,*
etc...OriginalL'auteur dknaack
KeyPress
événement n'a pas l'attraper "Ctrl + V" pour une raison quelconque. UtilisationKeyDown
événement:ou
Non, vous ne pouvez pas. Vous avez besoin d'hériter de votre zone de texte, remplacer
WndProc
et poignéeWm_Paste
message. Sinon, vous pouvez utiliserTextChanged
événement pour voir ce que l'utilisateur les a collé/Non, je m'occupe de l'collé valeur séparément. Mais pour permettre à type de valeurs, comme je l'ai mentionné plus tôt
C'est ce que j'ai dit, vous avez besoin pour gérer
Wm_Paste
et de vérifier que l'utilisateur est le collage, vous pouvez décider de permettre ou pas.OriginalL'auteur Sriram Sakthivel
Le Ctrl+V séquence peut être exercé par événement keypressevent.
Vous juste ne peut pas vérifier de la manière suivante :
Vous devez utiliser:
parce que le keybord génère de l'ASCII=22 (synchrone en veille).
L'exemple suivant active la zone de texte à accepter +- montants avec virgule de séparation et permet à coller par Ctrl+V
OriginalL'auteur Sylwester Santorowski
Vous devez utiliser KeyDown ou KeyUp, parce que la pression de Touche de l'événement n'est pas déclenché par le bouton CTRL, mais seulement par "caractère" des boutons. Si vous utilisez l'événement KeyDown vous pouvez détecter
ctrl+v
en cochant:OriginalL'auteur Brutus