Как заставить текстовое поле принимать только цифровые символы?

#vb.net #winforms #textbox

#vb.net #winforms #текстовое поле

Вопрос:

Как заставить текстовое поле принимать только цифровые символы (0-9)? и выдавать сообщение об ошибке, если оно содержит какие-либо алфавиты или символы.

Ответ №1:

Вы могли бы перехватить событие, KeyDown и проверить, e.KeyCode является ли оно числовым или нет, и отбросить его, если хотите.
Еще одна вещь, которую вы могли бы попробовать, это использовать IsNumeric(txt.Text) .

Ответ №2:

Эта MSDN статья поможет вам:

Ответ №3:

Вы могли бы использовать регулярное выражение что-то вроде: ^(d{0,11})(.d{0,2})?$ Это позволит использовать 0-11 цифр слева от десятичной дроби и 0-2 цифры справа от десятичной дроби.

Если у вас есть элементы управления Ajax, вы могли бы использовать расширитель текстового поля с фильтром <cc1:FilteredTextBoxExtender id="FilteredTextBoxExtender8" runat="server" TargetControlID="YourTextBox" FilterType="Custom,Numbers" ValidChars="." >
</cc1:FilteredTextBoxExtender>

Или вы также могли бы попробовать подход Марко.

Комментарии:

1. Также как я могу разрешить пользователю вводить символы и —

2. @Failed_Noob вы используете Visual Studio? Если да, то какая версия? Если нет … тогда как вы создаете Winform?? Попробуйте взглянуть на эту ссылку msdn.microsoft.com/en-us/library/ms996428.aspx

3. Затемнить myRegEx как новое System.Text.RegularExpressions.Regex(«^(d{0,11})(.d{0,2})? $») Если myRegEx. IsMatch(YourTextBox.text) Тогда ‘Нормально и разрешить текст, который был введен иначе’ не подходит. затем отобразите сообщение об ошибке, в котором указаны числа только с 2 десятичными знаками и ‘-‘ или ‘ ‘. Завершить, если

4. На панели инструментов в разделе проверка перетащите regularexpressionvalidator в вашу форму. в свойствах этого элемента управления вы можете выбрать элемент управления для проверки: Ваше текстовое поле. Установите для отображения значение Static, Dynamic, None. добавьте выражение проверки:^(d{0,11})(.d{0,2})?$. Установите сообщение об ошибке: Это поле не может быть длиннее 11 цифр и 2 знаков после запятой. и т.д. Ваша разметка должна выглядеть следующим образом:

5. <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="YourTestBox" Display="Dynamic" ErrorMessage="RegularExpressionValidator" ValidationExpression="^(d{0,11})(.d{0,2})?$ SetFocusOnError="True""></asp:RegularExpressionValidator> Чтобы протестировать reg. выражение просто добавьте текст в текстовое поле и уберите фокус с текстового поля. Должно появиться сообщение об ошибке. Чтобы разрешить пользователю вводить символы и -, я думаю, синтаксис для регулярного выражения либо:^([ -]?d{0,11})(.d{0,2})?$ ИЛИ ^[ -]?(d{0,11})(.d{0,2})?$. Я думаю, что первое правильно.

Ответ №4:

Как насчет того, что это позволит использовать только числовые данные и свободное пространство

При Keypress событии

  if ((!char.IsNumber(e.KeyChar)) amp;amp; !(e.KeyChar == (char)Keys.Back))
        {
            e.Handled = true;
        }
  

Ответ №5:

Здесь я с помощью текстового поля pincode ввожу pin-код и идентификатор как txtPinCode

вы просто пишете поверх кода в разделе document функция запускается, давайте запишем этот код и проверим один раз

$(«#<%=txtPincode.ClientID%>»).numeric();

спасибо akreddy

Ответ №6:

 If Asc(e.KeyChar) <> 13 AndAlso Asc(e.KeyChar) <> 8 AndAlso Not IsNumeric(e.KeyChar) Then
    MessageBox.Show("Please enter numbers only")
    e.Handled = True
End If