Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
3 / 3 / 2
Регистрация: 13.10.2015
Сообщений: 405
1

Один обработчик события для нескольких TextBox'ов

28.04.2016, 16:41. Просмотров 2235. Ответов 8
Метки нет (Все метки)

Добрый день! У меня в приложении 4 текстбокса пишу код для запрета ввода букв, как его применить для 3-х текстбоксов, а 4-й не затрагивать. Заранее спасибо!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string tmp = textbox1.Text.Trim();
string outS = string.Empty;
bool z_1 = true;
if(tmp.Lenght > 1 && tmp[0] == '0' && tmp[1] !=',')
tmp = tmp.Substring(1);
foreach(char ch in tmp)
if (Char.IsDigit(ch) || (ch == ',' && z_1))
{
outS +=ch;
if (ch ==',')
z_1 = false;
}
textbox1.Text = outS;
textbox1.SelectionStart = outS.Lengh;
этот код необходимо применить к 3-м текстбоксам не затрагивая 4-й. Или есть более изящный метод?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2016, 16:41
Ответы с готовыми решениями:

Как назначить один обработчик события для нескольких контролов
Здравствуйте. Имеется 8 numericUpDown. Подскажите пожалуйста можно ли сократить такой код: ...

Как сделать свой обработчик события для нескольких TextBox
У меня есть метод, который не позволяет писать в textBox'ы ничего кроме цифр. public static int...

Один обработчик для нескольких PictureBox
Всем доброго времени суток. Есть много пикчер боксов около 16 штук, и на каждый нужно привязать...

Как вызвать один обработчик события в другом обработчике события?
Здравствуйте. Подскажите пожалуйста, каким образом можно вызвать информацию из одного обработчика...

8
Модератор
Эксперт .NET
5361 / 4517 / 2886
Регистрация: 20.04.2015
Сообщений: 8,173
28.04.2016, 17:00 2
Цитата Сообщение от _Faradey Посмотреть сообщение
Или есть более изящный метод?
Обработчик
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '.')
    {
        e.KeyChar = ','; 
    }
 
    if ((e.KeyChar == ',' && textBox1.Text.Contains(',')) | (!char.IsDigit(e.KeyChar) && e.KeyChar != (char)8 && e.KeyChar != ','))
    {
        e.Handled = true;
    }
}
подписывайте к событию KeyPress 3-х текстбоксов.
1
3 / 3 / 2
Регистрация: 13.10.2015
Сообщений: 405
28.04.2016, 17:03  [ТС] 3
А как можно применить этот код ко всем текстбоксам не прописывая в событии каждого? Если допустим текстбоксов будет много?
Или я что-то не так понял? ))
0
Модератор
Эксперт .NET
5361 / 4517 / 2886
Регистрация: 20.04.2015
Сообщений: 8,173
28.04.2016, 17:20 4
_Faradey,
так я же написал:
Цитата Сообщение от Даценд Посмотреть сообщение
подписывайте к событию KeyPress 3-х текстбоксов
И события нескольких текстбоксов будут вызывать один и тот же обработчик.
Если текстбоксы создаются не динамически, а в конструкторе, то в окне свойств для каждого текстбокса переходите в раздел "События", находите событие KeyPress, открываете список доступных обработчиков и выбираете textBox_KeyPress.
0
3 / 3 / 2
Регистрация: 13.10.2015
Сообщений: 405
10.05.2016, 09:08  [ТС] 5
Цитата Сообщение от Даценд Посмотреть сообщение
подписывайте к событию KeyPress 3-х текстбоксов
Что-то не догоняю, как это сделать... вот t_1, t_2, t_3 как это в обработчик засунуть?
0
Модератор
Эксперт .NET
5361 / 4517 / 2886
Регистрация: 20.04.2015
Сообщений: 8,173
10.05.2016, 11:08 6
Цитата Сообщение от _Faradey Посмотреть сообщение
вот t_1, t_2, t_3 как это в обработчик засунуть?
ссылку на текстбокс, запустивший обработчик содержит параметр sender, поэтому можно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '.')
    {
        e.KeyChar = ',';
    }
 
    if ((e.KeyChar == ',' && (sender as TextBox).Text.Contains(',')) | (!char.IsDigit(e.KeyChar) && e.KeyChar != (char)8 && e.KeyChar != ','))
    {
        e.Handled = true;
    }
}
1
3 / 3 / 2
Регистрация: 13.10.2015
Сообщений: 405
10.05.2016, 11:43  [ТС] 7
Что-то никак... применимо для 1-го текстбокса, в остальных все по-прежнему (или надо для каждого текстбокса прописывать этот код) и еще одно но, в Вашем коде легко можно ввести 0000... //// в моем коде запрет любых символов, больше одного нуля и т.п. т.е. текстбокс, как окно калькулятора
0
Модератор
Эксперт .NET
5361 / 4517 / 2886
Регистрация: 20.04.2015
Сообщений: 8,173
11.05.2016, 16:23 8
Лучший ответ Сообщение было отмечено _Faradey как решение

Решение

Цитата Сообщение от _Faradey Посмотреть сообщение
как окно калькулятора
вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '.')
    {
        e.KeyChar = ',';
    }
    if (char.IsDigit(e.KeyChar) && (sender as TextBox).Text == "0")
    {
        (sender as TextBox).Text = e.KeyChar.ToString();
        e.Handled = true;
        (sender as TextBox).Select(1, 0);
    }
 
    if ((e.KeyChar == ',' && (sender as TextBox).Text.Contains(',')) 
        | (!char.IsDigit(e.KeyChar) && e.KeyChar != (char)8 && e.KeyChar != ','))
    {
        e.Handled = true;
    }
}
1
3 / 3 / 2
Регистрация: 13.10.2015
Сообщений: 405
31.05.2016, 18:19  [ТС] 9
Кстати, при таком подходе не работает Backspace!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2016, 18:19

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

Можно ли описать один обработчик для нескольких TextBox-ов?
Всем привет! Хотелось бы спросить, можно ли прописать один метод для разных элементов? В моем...

Один обработчик событий для нескольких разных элементов
Суть в следующем: Есть несколько TextBox, По у молчанию в них записан одинаковый текст. Как...

Писать несколько обработчиков для одного события или один обработчик, в котором вызывать методы?
Например есть событие Click. Для него автоматически создается обработчик button_Click (object...

Обработчик события Timer.Tick - объясните один нюанс
Всем привет, такая вот штука: Пишу приложение для записи звука и для дальнейшей его...


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

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

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