Как установить выражение Regex в качестве маски для MaskedTextBox в C#?

Я хочу установить маску MaskedtextBox из выражения Regex. Например, мне нужен действительный адрес электронной почты, десятичные значения и другие выражения регулярных выражений для MaskedtextBox.

1 ответ

Решение

Для справки здесь описано, что вы можете сделать с маской: http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.mask(VS.90).aspx

Единственный раз, когда я вижу, что вам нужно установить маску из регулярного выражения, это если у вас нет контроля над регулярным выражением, например, если оно получено от пользователя или из базы данных. Маски имеют формат, отличный от регулярных выражений, и не такие мощные. Так что иногда это может быть даже невозможно. Насколько я знаю, вы просто не можете проверить что-то вроде электронного письма с маской, потому что изменяется положение и длина различных частей.

Вместо использования маски, вы, вероятно, должны просто использовать регулярную проверку, а затем вы можете использовать регулярные выражения напрямую. Убедитесь, что свойство CausesValidation (обычного, не маскированного) текстового поля имеет значение true, затем перехватите событие Validating и, если регулярное выражение не совпадает, установите для свойства CancelEventArgs.Cancel значение true.

Другие вопросы по тегам