@mrFrip
Преодолеваю прокрастинацию

Событие KeyPress у TextBox. Как сделать один формат для различных TextBox?

Есть много TextBox'ов, в которые нужно вводить только числа, и больше никаких символов.
На просторах интернета нашел данный код который почти полностью удовлетворяет мои нужды
spoiler
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            // Правильными символами считаются цифры,
            // запятая, <Enter> и <Backspace>.
            // Будем считать правильным символом
            // также точку, на заменим ее запятой.
            // Остальные символы запрещены.
            // Чтобы запрещенный символ не отображался 
            // в поле редактирования,присвоим 
            // значение true свойству Handled параметра e
 
            if ((e.KeyChar >= '0') && (e.KeyChar <= '9'))
            {
                // цифра
                return;
            }
 
            if (e.KeyChar == '.')
            {
                // точку заменим запятой
                e.KeyChar = ',';
            }
 
            if (e.KeyChar == ',')
            {
                if (textBox1.Text.IndexOf(',') != -1)
                {
                    // запятая уже есть в поле редактирования
                    e.Handled = true;
                }
                return;
            }
 
            if (  Char.IsControl (e.KeyChar) )
            {
                // <Enter>, <Backspace>, <Esc>
                if ( e.KeyChar == (char) Keys.Enter)
                    // нажата клавиша <Enter>
                    // установить курсор на кнопку OK
                    button1.Focus(); 
                return;
            }
 
            // остальные символы запрещены
            e.Handled = true;
        }

но в тоже время, мне хотелось бы, чтобы я мог данной функции передать TextBox в котором производиться ввод, и button1, на который должен сместиться фокус (дабы не создавать отдельные события KeyPress для каждого TextBox в программе)
Но я не знаю, как мне это сделать, и сделать так, чтобы можно было легко указать событие через VisualStudio
  • Вопрос задан
  • 674 просмотра
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
1 - https://duckduckgo.com/?q=winforms+TextBox+validat...
2 - https://duckduckgo.com/?q=wpf+TextBox+validation&t...

выбрать нужное upd и да, там не только числа вводить, можно задать форматы для только положительных чисел, количество знаков после запятой, денежных величин, даты и/или времени в нужном формате, емейлов, урлов, ФИО, и тд..
для изучения
самое то
upd 2 чуть не забыл - один валидатор без проблем можно вешать на пачку однотипных полей ввода, практикуйтесь (изучите внимательнее окно свойства в дизайнере, если это винформы)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы