Маски текстовых полей Win Forms - PullRequest
6 голосов
/ 14 февраля 2010

Как я могу поместить маску в текстовое поле формы выигрыша, чтобы оно допускало только цифры? И как это работает для других данных масок, почтового индекса телефона и т. Д.

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

Спасибо.

Ответы [ 6 ]

5 голосов
/ 14 февраля 2010

Вы можете использовать элемент управления MaskedTextBox

http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx

3 голосов
/ 14 февраля 2010

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

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

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

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

1 голос
/ 26 марта 2012
0 голосов
/ 20 мая 2016

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

Разрешить только цифры с десятичными знаками:

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;

}
0 голосов
/ 21 ноября 2014

Используйте текстовое поле «Маска» и присвойте MasktextboxId.Mask.

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

0 голосов
/ 14 июня 2012

Как сказано выше, используйте MaskedTextBox .

Также стоит использовать ErrorProvider .

...