Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 08.05.2016
Сообщений: 6
1

Проверка на корректность ввода данных

10.10.2016, 14:43. Просмотров 4512. Ответов 9
Метки нет (Все метки)

Имеется 23 текстовых поля textBox. В каждом нужно отследить корректность ввода данных, т.е. в поле "Фамилия" нельзя печатать цифры, а в "Контактный телефон" -- буквы. Используя найденные на этом форуме подсказки (для разных случаев: только цифры или только буквы), я ни к чему не прихожу. В основном это выражается в том, что в одних полях можно писать только цифры, а в других писать нельзя вообще.
Код примерно одинаковый, только в одном случае Char.IsDigital, в другом -- Char.IsNumbers.
C#
1
2
3
4
5
6
 
        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar) | e.KeyChar == '\b') return;
            else e.Handled = true;
        }
Наверняка существует другой способ отфильтровать нажатие клавиш, но меня пока не осенило. Буду признательна, если ответ найдётся.

Скрин программы
https://www.cyberforum.ru/atta... 1476099356
0
Миниатюры
Проверка на корректность ввода данных  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2016, 14:43
Ответы с готовыми решениями:

Проверка textBox на корректность ввода
Подскажите как простым способом проверить текст бокс на регулярные выражения. Т.е как примерно как...

Проверка введенных данных на корректность
Подскажите как сделать проверку введенных данных(Имени) в TextBox по средствам события(нажатие на...

проверка ввода данных в datagridview
Делаю курсовую, игра подобие морского боя 5*5 компьютер и игрок поочередно стреляют по ячейкам...

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

9
367 / 365 / 212
Регистрация: 29.03.2013
Сообщений: 867
10.10.2016, 15:50 2
MayronMay, только цифры:
C#
1
2
3
4
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) 
            {
                e.Handled = true;
            }
Только буквы:
C#
1
e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back);
0
1 / 1 / 0
Регистрация: 08.05.2016
Сообщений: 6
10.10.2016, 19:47  [ТС] 3
Проблема не ушла.
Если я правильно поняла, код "Только цифры" надо распихать по всем textbox'ам, где нужно писать цифры, а "только буквы" только там, где нужны буквы, но тогда в полях Фамилия, Имя, Отчество и т.д. все в порядке, когда как в других полях совсем ничего нельзя написать.
0
1270 / 1106 / 783
Регистрация: 29.02.2016
Сообщений: 3,408
10.10.2016, 19:57 4
C# Validating input for textbox on winforms
http://stackoverflow.com/quest... n-winforms
0
367 / 365 / 212
Регистрация: 29.03.2013
Сообщений: 867
10.10.2016, 20:01 5
MayronMay, да, вы правильно поняли. Не знаю почему код, который позволяет писать только цифры не заработал. Предлагаю тогда вам для ввода только цифр использовать свой код из первого сообщения, он же вроде работал
0
1 / 1 / 0
Регистрация: 08.05.2016
Сообщений: 6
10.10.2016, 20:09  [ТС] 6
afront, спасибо, попробую.

Людвиг Бодмер, дело в том, что в моем коде я могу писать только цифры в полях типа Контактный телефон и Дата рождения, когда как в ФИО ничего не пишется. Все наоборот, в общем
0
367 / 365 / 212
Регистрация: 29.03.2013
Сообщений: 867
10.10.2016, 20:34 7
MayronMay, чего-то я явно не понимаю, вроде тут всё просто. Вы же как-то так пишите?:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void textBoxФамилия_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back);
        }
private void textBoxИмя_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back);
        }
private void textBoxДата_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'));
        }
private void textBoxТелефон_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar));
        }
0
1 / 1 / 0
Регистрация: 08.05.2016
Сообщений: 6
10.10.2016, 20:39  [ТС] 8
Людвиг Бодмер, именно так. В том-то и дело, что по сути всё просто, но на практике получается непоймиче.
0
367 / 365 / 212
Регистрация: 29.03.2013
Сообщений: 867
10.10.2016, 21:31 9
MayronMay, можно еще попробовать MaskedTextBox с масками "000000" только для чисел и "????????" только для букв.
0
1 / 1 / 0
Регистрация: 08.05.2016
Сообщений: 6
11.10.2016, 06:00  [ТС] 10
Людвиг Бодмер, планировала попробовать маску, если не найду выход, но тут вдруг подвернулась формула
C#
1
            if ((e.KeyChar >= 'А') & (e.KeyChar <= 'я')) e.Handled = true;
и
C#
1
            if ((e.KeyChar >= '0') & (e.KeyChar <= '9')) e.Handled = true;
И все стало просто чудесно.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2016, 06:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Корректность ввода
Имеется вот такое приложение для умножения матриц. Нужно проследить за корректностью ввода данных....

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

Как осуществить проверку на корректность ввода в TextBox
Приветствую, Друзья! Имеется TextBox-ы, в которые должны вводиться числа (числа могут быть целые и...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.