Как сделать чтобы в TextBox вводились только цифры C#
Часто требуется ограничить пользовательский ввод в TextBox только цифрами. В этой статье мы рассмотрим несколько методов, которые позволят нам достичь этой цели в C#.
Метод 1: Использование обработчика событий KeyPress
Первый метод, который мы рассмотрим, основан на создании обработчика событий KeyPress для TextBox. Здесь мы проверяем каждый введенный символ и разрешаем только цифры. Вот пример кода:
csharp
private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
В этом примере мы проверяем, является ли введенный символ управляющим символом (например, Backspace) или цифрой. Если это не так, мы устанавливаем Handled в true, чтобы предотвратить ввод символа.
Метод 2: Использование свойства Handled и события KeyDown
Второй метод заключается в использовании обработчика событий KeyDown и установке свойства Handled значения true. Это позволит нам разрешить ввод только цифр. Вот пример кода:
csharp
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Back && !char.IsDigit((char)e.KeyCode))
{
e.Handled = true;
}
}
В этом примере мы проверяем, является ли нажатая клавиша цифрой или клавишей Backspace. Если это не так, мы устанавливаем Handled в true, чтобы предотвратить ввод символа.
Метод 3: Использование свойства ShortcutsEnabled и события KeyDown
Третий метод основан на использовании свойства ShortcutsEnabled и события KeyDown. При установке свойства ShortcutsEnabled в true мы запрещаем пользователю использовать сочетания клавиш, такие как Ctrl+C (копировать) и Ctrl+V (вставить). Вот пример кода:
csharp
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && (e.KeyCode == Keys.C || e.KeyCode == Keys.V))
{
e.Handled = true;
}
}
В этом примере мы проверяем, нажата ли клавиша Ctrl в сочетании с клавишами C или V. Если это так, мы устанавливаем Handled в true, чтобы предотвратить копирование и вставку.
Метод 4: Использование регулярных выражений для WPF
Если вы разрабатываете приложение на платформе WPF, есть отдельный метод для разрешения ввода только цифр. Мы можем использовать регулярное выражение для проверки и ограничения ввода. Вот пример кода:
xaml
<TextBox x:Name="textBox" PreviewTextInput="TextBox_PreviewTextInput"/>
csharp
private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex("[^0-9]+");
e.Handled = regex.IsMatch(e.Text);
}
Здесь мы используем событие PreviewTextInput для применения регулярного выражения, которое разрешает только цифры. Если введенный текст не соответствует регулярному выражению, мы устанавливаем Handled в true, чтобы предотвратить ввод символа.
Полезные советы
- Помните, что пользователь все равно может вставить текст с помощью контекстного меню или командной строки. Поэтому следует также проверить введенные данные при отправке формы или при нажатии кнопки.
- Не забывайте предоставить пользователю информацию о причинах неверного ввода и что именно допустимо вводить.
Выводы
На этом мы завершаем статью о том, как разрешить ввод только цифр в TextBox в C#. Мы рассмотрели несколько методов, включая использование обработчика событий KeyPress, свойства Handled и события KeyDown, свойства ShortcutsEnabled и события KeyDown, а также использование регулярных выражений для платформы WPF. Выберите подходящий метод в зависимости от ваших потребностей и платформы разработки. Не забывайте также проверять введенные данные перед их использованием и предоставлять информацию пользователю о правильном формате ввода.