Проблемы с KeyPressEventArgs - PullRequest
       29

Проблемы с KeyPressEventArgs

1 голос
/ 08 февраля 2012

вот моя проблема ... я делаю калькулятор в C #, и я не хочу нажимать каждую кнопку для выполнения операции, я хочу обработать это с помощью моей цифровой клавиатуры ... как если бы я нажал "1",покажите мне в текстовом поле "1".

я изменил

private void cmd1_Click(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '1')
            {
                txtShow.Text='1';
            }
        }

и у меня появляется эта ошибка:

Нет перегрузки для совпадений 'cmd1_Click'делегат "System.EventHandler"

this.cmd1.Click + = new System.EventHandler (this.cmd1_Click);

что за хак с этим не так?

Приветствия.

Ответы [ 3 ]

2 голосов
/ 08 февраля 2012

изменить

this.cmd1.Click += new System.EventHandler(this.cmd1_Click);

на

this.cmd1.KeyPress += new System.EventHandler(this.cmd1_Click);

Возможно, вы также захотите переименовать cmd1_Click.

И, как упоминалось в ответе выше, этобудет лучше в самой форме, а не в каждой кнопке.

1 голос
/ 08 февраля 2012

Вы пытаетесь присоединить обработчик события, который соответствует событию KeyPress, к событию Click.

Здесь что-то не так (плохое копирование / вставка?):

private void cmd1_Click(object sender, KeyPressEventArgs e)

Он называется автоматически сгенерированным обработчиком события для Click события cmd1, но его определение является определением для KeyPress обработчика события.

Какое событие вы хотите обработать? KeyPress или Click или оба?

0 голосов
/ 08 февраля 2012

Щелчок - это событие мыши, вам нужно присоединить событие клавиатуры, если вы хотите получать аргументы события клавиатуры, вам нужно поместить все кнопки калькулятора в общую панель и обрабатывать как нажатие кнопки «, так и» текст, отправляемый на панель, таким образом, вы можете отреагировать на оба нажатия клавиш в любом месте и нажать на один и тот же результат.

Простой способ обработки событий для всех кнопок без выполнения одной за другой - иметь обработчик нажатия одной кнопки и проверить свойство text элемента управления, чтобы узнать, как действовать (привести отправителя к кнопке и проверить текст, переключись на это)

Не тестировалось:

switch(((button)sender).Text)
{
    case "1":
          // react to user having pressed 1 etc etc
}
...