Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407

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

28.04.2016, 16:41. Показов 5062. Ответов 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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.04.2016, 16:41
Ответы с готовыми решениями:

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

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

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

8
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.04.2016, 17:00
Цитата Сообщение от _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
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407
28.04.2016, 17:03  [ТС]
А как можно применить этот код ко всем текстбоксам не прописывая в событии каждого? Если допустим текстбоксов будет много?
Или я что-то не так понял? ))
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.04.2016, 17:20
_Faradey,
так я же написал:
Цитата Сообщение от Даценд Посмотреть сообщение
подписывайте к событию KeyPress 3-х текстбоксов
И события нескольких текстбоксов будут вызывать один и тот же обработчик.
Если текстбоксы создаются не динамически, а в конструкторе, то в окне свойств для каждого текстбокса переходите в раздел "События", находите событие KeyPress, открываете список доступных обработчиков и выбираете textBox_KeyPress.
0
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407
10.05.2016, 09:08  [ТС]
Цитата Сообщение от Даценд Посмотреть сообщение
подписывайте к событию KeyPress 3-х текстбоксов
Что-то не догоняю, как это сделать... вот t_1, t_2, t_3 как это в обработчик засунуть?
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
10.05.2016, 11:08
Цитата Сообщение от _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
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407
10.05.2016, 11:43  [ТС]
Что-то никак... применимо для 1-го текстбокса, в остальных все по-прежнему (или надо для каждого текстбокса прописывать этот код) и еще одно но, в Вашем коде легко можно ввести 0000... //// в моем коде запрет любых символов, больше одного нуля и т.п. т.е. текстбокс, как окно калькулятора
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
11.05.2016, 16:23
Лучший ответ Сообщение было отмечено _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
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407
31.05.2016, 18:19  [ТС]
Кстати, при таком подходе не работает Backspace!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.05.2016, 18:19
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru