Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 1
Регистрация: 08.12.2014
Сообщений: 20
1

Работа с textbox

10.05.2017, 17:44. Показов 2139. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Не так давно занимаюсь c#.
Есть программа. Имеются, почти, 50 TextBox-ов. Необходимо ограничить ввод различных данных. Грубо говоря 1-10 только целые числа, 20-30 только дробные и т.д. Для это было реализовано что-то подобное:
C#
1
2
3
4
5
6
7
8
private void textBox38_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {           
            if (chekedinging == 2)
            {
                Proof_KeyPress_canttouchthis(textBox38, e);
            }
      
        }
где Proof_KeyPress_canttouchthis
C#
1
2
3
4
5
6
7
8
9
10
public static void Proof_KeyPress_canttouchthis(object sender, KeyPressEventArgs e)
        {
TextBox TBox = (TextBox)sender;
            if (!(Char.IsDigit(e.KeyChar)) || (Char.IsDigit(e.KeyChar)) || (e.KeyChar == (char)Keys.Delete) || (e.KeyChar == (char)Keys.Back))
            {
                {
                    e.Handled = true;
                }
            }
}
Все работает и все хорошо.
Но вопрос в том что можно ли как-то сократить число кода? 50 textbox-ов на описание каждого минимум по 7 строк, что-то не то.
Я так предполагал, можно запускать проверку по нажатию button-а, проверять все перед расчетом. Тогда при каждом нажатии "Пуск", запускается предварительно проверка измененная Proof_KeyPress_canttouchthis(textBox38), например. Если я правильно понимаю это подчистит примерно 300 строк.
Вопрос... Можно как-либо сделать проверку, универсальную функцию, для проверки всех текстбоксов? Первая версия мне больше нравится, для каждого tb она проверяет событие ввода. если удовлетворяет критериям то позволяет ввод символа.
Может есть функция или что-либо что ловит все изменения на форме и от этого прыгать? Подскажите.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2017, 17:44
Ответы с готовыми решениями:

Работа с TextBox. Текст из multiline TextBox в несколько простых TextBox
Как перенести большой текст из одного мультилайн textbox в несколько обычных textbox у которых...

Работа с массивом элементов класса TextBox. Окрашивание textBox при нажатии мыши на него
Доброго времени суток. До запуска программы не известно, какое количество элементов класса TextBox...

Работа с textbox. Сохранение текста при выходе из программы только если textbox имеет текст
Создал форму в которой есть textbox и ToolStripMenuItem - кнопка выхода из приложения. Идея в том,...

Работа с textBox
Здравствуйте! Как можно узнать, не пуста ли строка textBox, и удалить лишние пробелы в начале и...

4
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
10.05.2017, 17:48 2
ice42, ты можешь всем текстбоксам задать один метод-обработчик проверки.
0
0 / 0 / 1
Регистрация: 08.12.2014
Сообщений: 20
10.05.2017, 18:13  [ТС] 3
не совсем понимаю как это работает, можете на пальцах подсказать?)
при запуске программы мне нужно отлавливать (KeyPressEventArgs e)?
нужно какой-то ивент сделать?)
он может как-нибудь, в плохих руках, повлиять на работу программы?
если я пользуюсь tb.readonly, с этим обработчиком ввод также будет запрещен?
0
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
11.05.2017, 10:52 4
Лучший ответ Сообщение было отмечено ice42 как решение

Решение

ice42, у тебя щас есть, например, 10 одинаковых методов, которые проверяют 10 текстбоксов на то, что вводится целое число. Предполагаю, что они работают. Удаляй 9 из 10 методов, оставь один, назови его как-нибудь универсально (TextBox_IntCheck, например).
Теперь открываешь дизайнер формы, выделяешь все эти 10 текстбоксов, открываешь свойства, нажимаешь на иконку с молнией, открываются ивенты, находишь там свой KeyPress, тыкаешь на него 1 раз, появляется стрелочка справа, тыкаешь ее, выпадает список методов, там выбираешь свой TextBox_IntCheck.
Профит. Теперь этот метод будет проверять все 10 текстбоксов.
1
0 / 0 / 1
Регистрация: 08.12.2014
Сообщений: 20
11.05.2017, 15:09  [ТС] 5
И все?!))
Огромное вам Спасибо!
0
11.05.2017, 15:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2017, 15:09
Помогаю со студенческими работами здесь

Работа с TextBox
Не Подскажите? Имеется TextBox1.Text = NV00000775513( переменная) и есть TextBox2.Text равный...

Работа с TextBox
Как получить значения из TextBox в другой класс(не класс формы) у меня почему то метод не принимает...

Работа с textbox и БД
У меня берется последняя запись с БД и прибавляется 1,а как реализовать такое,чтобы если БД...

Работа с textBox
Как сделать так, чтобы можно было в textBox1 ввести строку символов, а в textBox2 при нажатии на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru