2009-07-16 2 views
1

Я установил MaskedTextBox's маску для: "Fl \ воздух H \ ал ### ##, что-то здесь:. #### ##"Получение значения из текстового поля в Маске

Когда пользователь вводит значение окончательный текст выглядит следующим образом:

Flair Hal 987.67, то здесь: 1234,12

Что будет лучший способ извлечь 976.67 и 1234.12 из текста в MaskedTextBox в. Я ищу список, который будет иметь все значения маски (976.67, 1234.12).

В строке маски может быть любое количество масок, а маска может быть любой допустимой маской.

Я думаю, что сначала удаляю '\' из маски, а затем в цикле for продолжаем сравнивать Маску с текстом и обнаруживать изменения и добавлять их в список. Но это не очень хорошо для меня, и я думаю, что, возможно, это лучший способ сделать это.

ответ

1

Ну я узнал, что нет ничего хорошего способ сделать это. Как сказал Адрианбанкс, я должен закодировать себя, чтобы получить эту информацию.

Я написал свой собственный usercontrol, который использует комбинацию меток и maskedtexboxes для получения ввода.

Я использую фигурные скобки, чтобы указать, где я скрыл текстовое поле с маскировкой, а пользовательский элемент управления помещает одно маскированное текстовое поле на пару фигурных скобок. «Flair Hal {###. ##}, что-то здесь: {####. ##}"

Тогда я могу использовать коллекцию значений, которая имеет значения для масок.

0

Я бы подумал, что вам нужно будет использовать TextMaskFormat для удаления литералов и символов приглашения из свойства .Text. Таким образом, вы получите только числа (и пробелы).

1

В вашем примере есть четыре значения маски: 987, 67, 1234, 12. Тот факт, что блоки разделены символом a. рассматриваются как одна ваша собственная логика, поэтому я думаю, вам просто нужно написать код, чтобы получить информацию самостоятельно.

Посмотрите на MaskedTextProvider Недвижимость MaskedTextBox и его EditPositions. EditPositions дает вам позиции в пределах Text, которые пользователь может ввести.

0

Используйте регулярное выражение. Ниже регулярное выражение будет работать на вашем примере, но вы можете настроить его в зависимости от фактической маски: [.]

\ d * \ d {2}