Ввод в TextBox только цифр

Категория: C# Комментариев: 8

Небольшой кусок кода, который поможет сделать так, чтобы в текстбокс на форме можно было вводить только цифры.
Добавляем на событие KeyPress текстбокса следующую функцию:

 // Функция запрета ввода в текстбоксы не цифр
 private void textbox1_KeyPress(object sender, KeyPressEventArgs e)
 {
 // Если это не цифра.
 if (!Char.IsDigit(e.KeyChar))
 {
 // Запрет на ввод более одной десятичной точки.
 TextBox tb = (TextBox)sender;
 if (e.KeyChar != '.' || tb.Text.IndexOf(".") != -1)
 {
 e.Handled = true;
 }
 }
 }
 // ------------------------------------------
Автор: Кто-то   @   2 мая 2009 Комментариев: 8
Метки :

Поблагодарить автора

Webmoney Z163628999150, R617151845974

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

Комментарии
июня 3, 2009
17:40
#1 Nikita :

Это из книги примеры по С# ? ))

июля 17, 2009
17:28
#2 Alchemist :

Очень плохо...

ctrl+v не сделать;

Backspace не сделать;

точка вводиться и вызывает ошибку;

Дек 17, 2009
22:42
#3 Apx :

Ну вобще то можно в условие добавить проверку на системный ключ, и всё будет работать.

Автор Дек 18, 2009
19:45

Можно, и даже нужно :)

марта 21, 2011
15:44
#5 LeoTor :

Вот на разных форумах нарыл и немного доработал может кому поможет, да есть недоработка можно в начале 0 вводить до бесконечности это надо исправить. :!:

// Проверка на ввод только чисел в textBox- ах, положительных и вещественных чисел

private void textBox_KeyPress (object sender, KeyPressEventArgs e)

{

// Обьявление место конкретного TextBox локальной переменной

TextBox tx = (TextBox) sender;

// Условие на выплнение вода только цифр и знака (-) только перед числом и только одного, а так же (.) только хотябы после одного знака и только одной

if (!(Char.IsDigit (e.KeyChar)) && !((e.KeyChar == '.') && (tx.Text.IndexOf («.») == -1) && (tx.Text.Length != 0)))

{

// обработка кнопки BACKSPACE

if (e.KeyChar != (char) Keys.Back)

{

e.Handled = true;

}

}

}

//фильтр на ввод значений отрицательного

private void tempBox_KeyPress (object sender, KeyPressEventArgs e)

{

// Обьявление место конкретного TextBox локальной переменной

TextBox tb = (TextBox) sender;

// Условие на выплнение вода только цифр и знака (-) только перед числом и только одного, а так же (.) только хотябы после одного знака и только одной

if (!(Char.IsDigit (e.KeyChar)) && (e.KeyChar != '-' || tb.Text.IndexOf («-») != -1 ||tb.Text.Length > 0))

{

// обработка кнопки BACKSPACE

if (e.KeyChar != (char) Keys.Back)

{

e.Handled = true;

}

}

}

Автор марта 22, 2011
9:41

Спасибо, интересный код. А с нулем постараемся что-нибудь придумать...

Окт 11, 2011
16:14
#7 епт :

епт...а так никак ?

regex numbrs = new Regex (@"^\d+s");

if (!numbrs.itmatch (бла)){

че за буквы?

}

Автор Окт 12, 2011
8:59

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

оставить комментарий

Предыдущая запись
«
Следующая запись
»