Как из обработчика Form1_KeyPress вызвать событие для нажатия заданной по имени кнопки на форме (кнопки 0-9) - C#

Узнай цену своей работы

Формулировка задачи:

Пишу калькулятор. Есть несколько кнопок (Button) с цифрами и знаками. Для цифр имена кнопок: but_0, but_1, ... but_9 На все кнопки с цифрами повешено общее событие b_0_Click, в котором внутри уже понятно, какая кнопка была нажата:
        private void but_0_Click(object sender, EventArgs e)
        { 
             string st = (sender as Button).Name;
             ...
Хочу добавить возможность нажимать эти же кнопки с клавиатуры. Для этого создал событие для формы:
        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            char ch= e.KeyChar;
            if (('0' >= ch) && (ch <= '9')) but_0_Click(Controls["but_" + ch.ToString()] as Button, e);
        }
И чтоб оно обрабатывалось всеми элементами сделал:
        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (Control contr in this.Controls)
            {
                contr.KeyPress += new KeyPressEventHandler(Form1_KeyPress);
            }
        }
Но что-то у меня в Form1_KeyPress не так при вызове but_0_Click, т.к. кнопки формы не нажимаются при нажатии на цифровые клавиши клавиатуры. При этом обработчик Form1_KeyPress вызывается нормально.

Вопрос:

Как из обработчика Form1_KeyPress вызвать событие для нажатия заданной по имени кнопки на форме (кнопки 0-9)? Вопрос вдогонку: как "нажать" заданную по имени кнопку but_ce c помощью комбинации Alt+E, например, или Ctrl+T (т.е. кнопок с модификаторами) ?

Решение задачи: «Как из обработчика Form1_KeyPress вызвать событие для нажатия заданной по имени кнопки на форме (кнопки 0-9)»

textual
Листинг программы
if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.A)
 MessageBox.Show ("Combination of ALt and A pressed");
 else if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.F1)
 MessageBox.Show("Combination of ALt and F1 pressed");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы