2010-02-14 3 views
6

Как я могу поместить маску в текстовое поле формы win, чтобы она позволяла только номера? А как это работает для других данных масок, телефон молнии и т.д.Win Forms text box mask

Я использую Visual Studio 2008 C#

Спасибо.

ответ

3

Хотите, чтобы предотвратить вход, который не допускается или подтвердить ввод до того, как можно дальше?

Первые могут путать пользователей, когда они нажимают клавиши, но ничего не происходит. Обычно лучше показывать свои нажатия клавиш, но отображать предупреждение о том, что ввод в настоящее время недействителен. Вероятно, также довольно сложно настроить маскировку регулярного выражения адреса электронной почты, например.

Посмотрите на ErrorProvider, чтобы пользователь мог ввести то, что он хочет, но показывать предупреждения по мере их ввода.

Для вашего первого предложения текстового окна, которое разрешает номера, вы также можете рассмотреть NumericUpDown.

+1

Правильно спроектированный пользовательский интерфейс не должны оставить никаких недоразумений, почему их текст не был напечатан. Я нахожусь в команде разработчиков, делающей программное обеспечение Medical Billing для людей, которые раньше никогда не пользовались компьютерами, и даже они понимают, почему письма не войдут в поле SSN или номер страхового удостоверения. –

+0

В основном я бы использовал проверку ввода, предотвращение только иногда в таких случаях, как SSN и поиск по идентификатору и т. Д. – eomeroff

0

Используйте маску Текстовое поле и назначьте MasktextboxId.Mask.

Если и хотите использовать текстовое поле, то вы должны написать регулярное выражение для него

0

управления нажмите клавишу событие пользователя, чтобы замаскировать вход, не позволяя никаких нежелательных символов.

Чтобы разрешить только номера с десятичными знаками:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     // allows 0-9, backspace, and decimal 
     if (((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 46)) 
     { 
      e.Handled = true; 
      return; 
     } 

     // checks to make sure only 1 decimal is allowed 
     if (e.KeyChar == 46) 
     { 
      if ((sender as TextBox).Text.IndexOf(e.KeyChar) != -1) 
       e.Handled = true; 
     } 
    } 

Чтобы разрешить только номера телефонов значения:

private void txtPhone_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (e.KeyChar >= '0' && e.KeyChar <= '9') return; 
    if (e.KeyChar == '+' || e.KeyChar == '-') return; 
    if (e.KeyChar == 8) return; 
    e.Handled = true; 

}