je dois être en mesure de verrouiller les caractères valides dans une zone de texte, j'ai actuellement un regex que je peux vérifier chaque caractère contre tels queVerrouillage des caractères valides dans une zone de texte
[A-Za z]
verrouillerait uniquement les caractères alpha.
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Back)
{
base.OnKeyPress(e);
return;
}
if (String.IsNullOrEmpty(this._ValidCharExpression))
{
base.OnKeyPress(e);
}
else
{
bool isValidChar = Regex.Match(e.KeyChar.ToString(),this._ValidCharExpression).Success;
if (isValidChar)
{
base.OnKeyPress(e);
}
else
{
e.Handled = true;
}
}
}
j'avais placé le code regex dans le code OnKeyPress, mais je wat pour permettre à toutes les touches spéciales, telles que Ctrl-V, pour être autorisé Ctrl-C et Backspace.
Comme vous pouvez le voir, j'ai la touche de retour arrière en cours de traitement. Cependant, Ctrl-V, par exemple, ne peut pas voir la clé V parce qu'elle s'exécute une seule fois pour la clé ctrl mais ne voit aucune clé de modification.
Quelle est la meilleure façon de gérer cette situation?
Le faire manuellement chez KeyPresses est HARD. Vous pouvez, mais vous devez vous rappeler d'autoriser toutes les touches de contrôle (retour arrière, supprimer, etc.). Si vous y parvenez, mettez-le au moins dans un nouveau contrôle dérivé de TextBox afin de pouvoir le réutiliser. Ou mieux, lisez la réponse de Tomalak - c'est la bonne façon. :) –