2009-07-16 9 views
1

J'ai mis MaskedTextBox's Masque à: "Fl \ air H \ al ### ##, quelque chose. ## ####"valeurs Obtenir de zone de texte masqué

Lorsque les entrées utilisateur la valeur texte final ressemble à quelque chose comme ceci:

Flair Hal 987,67, quelque chose: 1234,12

Quelle sera la meilleure façon d'extraire 976,67 et 1234,12 à partir du texte du MaskedTextBox. Je suis à la recherche d'une liste qui aura toutes les valeurs du masque (976.67, 1234.12).

Il peut y avoir un nombre quelconque de masques dans la chaîne de masque et le masque peut être n'importe quel masque valide.

Je pense d'abord retirer '\' du masque et puis dans une boucle for continuer à comparer le masque avec le texte et détecter les changements et les ajouter à la liste. Mais cela ne me semble pas bon et je pense qu'il y a probablement une meilleure façon de le faire.

Répondre

1

Eh bien j'ai découvert qu'il n'y a rien de bon façon de le faire. Comme adrianbanks a dit que je dois me coder pour obtenir cette information.

J'ai écrit mon propre contrôle utilisateur qui utilise une combinaison d'étiquettes et de maskedtexboxes pour obtenir l'entrée.

J'utilise des accolades pour indiquer l'emplacement de la zone de texte masquée et le contrôle utilisateur place une zone de texte masquée par paire d'accolades. "Flair Hal {###. ##}, quelque chose ici: {####. ##}"

Ensuite, je peux utiliser la collection de valeurs qui a les valeurs pour les masques.

0

Je pense que vous devriez utiliser TextMaskFormat pour supprimer les littéraux et les caractères d'invite de la propriété .Text. De cette façon, vous obtiendrez seulement les nombres (et les espaces).

1

Il y a quatre valeurs du masque dans votre exemple: 987, 67, 1234, 12. Le fait que les blocs séparés par un. sont traités comme l'un est votre propre logique, donc je pense que vous devrez juste écrire du code pour obtenir l'information vous-même. Consultez la propriété MaskedTextProvider du MaskedTextBox et sa propriété EditPositions. Le EditPositions vous donne les positions dans le Text que l'utilisateur peut entrer.

0

Utilisez une expression régulière. Le regex suivant fonctionnera pour votre exemple, mais vous pouvez avoir à le tordre en fonction de votre masque réelle: [.]

\ d de * \ d {2}

Questions connexes