Positionner le curseur dans un MaskedTextbox
Je voudrais être en mesure de remplacer le comportement par défaut de positionnement du curseur dans une zone de texte masqué.
La valeur par défaut est de placer le curseur de la souris a été cliqué, le masqué zone de texte contient déjà des personnages à cause du masque.
Je sais que vous pouvez masquer le curseur comme mentionné dans ce post, est-il quelque chose de similaire pour positionner le curseur au début de la zone de texte lorsque le contrôle reçoit le focus.
Vous devez vous connecter pour publier un commentaire.
Cela devrait faire l'affaire:
À améliorer Abbas solution de travail, essayez ceci:
Ce gestionnaire d'événement peut être ré-utilisé avec de multiples boîtes, et il ne prend pas loin de la capacité de l'utilisateur à positionner le curseur au milieu de l'entrée de données (j'.e ne force pas le curseur dans zeroeth position lorsque la case n'est pas vide).
Je trouve cela plus étroitement imitant une zone de texte standard. Seul problème restant (que je vois) est que, après l'Entrée de l'événement, l'utilisateur est toujours en mesure de sélectionner le reste de l' (vide) masque invite si xe tient la souris et l'entraîne jusqu'à la fin.
Qui est une grande amélioration sur le comportement par défaut de MaskedTextBoxes. Merci!
J'ai fait quelques changements à Ishmaeel est une excellente solution. Je préfère l'appeler BeginInvoke uniquement si le curseur doit être déplacé. J'ai aussi appeler la méthode à partir de différents gestionnaires d'événements, de sorte que le paramètre d'entrée est active MaskedTextBox.
Réponse partielle: vous pouvez positionner le curseur par l'affectation d'un 0-longueur de sélection pour le contrôle dans l'événement Clic de souris, par exemple:
...mettra l'accent circonflexe à la 5e position du caractère dans la zone de texte.
La raison que cette réponse n'est que partielle, c'est parce que je ne pense pas, généralement, une méthode fiable pour déterminer la position de l'accent circonflexe doit se positionner sur un clic. Cela peut être possible pour certains masques, mais dans certains cas (par exemple, le numéro de téléphone de masque), je ne peux pas vraiment penser à un moyen facile de séparer le masque et l'invite de caractères à partir de la réalité de la saisie de l'utilisateur...
Cette solution fonctionne pour moi. Essayez s'il vous plaît.
J'ai eu le mien fonctionne à l'aide de l'événement Click....pas d'Invoquer était nécessaire.
Cette solution utilise la méthode de Clic de la MaskedTextBox comme Gman Cornflake utilisé; cependant, j'ai trouvé nécessaire de permettre à l'utilisateur de cliquer à l'intérieur de la MaskedTextBox une fois qu'il contenait des données et le curseur de rester là où il est.
L'exemple ci-dessous désactive les invites et les littéraux et évalue la longueur des données dans le MaskedTextBox et si égal à 0, il met le curseur à la position de départ; sinon ça ne court-circuite le code qui met le curseur à la position de départ.
Le code est écrit dans VB.NET 2017. Espérons que cette aide!