Обнаружение ввода с клавиатуры и мыши на одной форме - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть эта форма ниже, и я хочу обнаружить нажатия клавиш и любые щелчки мыши по кнопке.

Например, если я нажимаю S на клавиатуре, появится сообщение START и нажатие клавиши отобразит нажатие клавиатуры . То же самое происходит, если щелкнуть мышью по кнопке START , за исключением того, что нажатие клавиши отобразит START BTN .

enter image description here

Вот мой код кнопки. Если я делаю только для кнопки или только IsKeyDown, она работает нормально, но когда я объединяю оба в одной форме, они go сенной.

private void btnStart_Click(object sender, EventArgs e)
{
    lblKeypress.Text = "START BTN";
    lblmessage.Text = "START";
}

Вот мой Keyboard.IsKeyDown код:

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (Keyboard.IsKeyDown(Key.S))
    {
        lblKeypress.Text = "Keyboard Press";
        lblmessage.Text = "START";
    }
}

Пожалуйста, помогите, спасибо.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

попробуйте этот код

 private void Form1_KeyDown(object sender, 
 EventArgs e){
   if (e.KeyData == Keys.S){
      lblKeypress.Text = "Keyboard Press";
      lblmessage.Text = "START";
    }
}
0 голосов
/ 21 февраля 2020

Убедитесь, что в вашей Форме вы установили KeyPreviewProperty на ИСТИНА

В Form1.Designer.cs

this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.form_keydown);

private void form_keydown(object sender, KeyEventArgs e)
 {
       int keyVal = (int)e.KeyValue;
       keyValue = -1;

      if ((keyVal >= (int)Keys.S))
      {
          keyValue = (int)e.KeyValue - (int)Keys.S;
          lblKeypress.Text = "Keyboard Press";
          lblmessage.Text = "START";
       }

 }

Примечание:

  • Убедитесь, что у вас нет связанных пространств имен WPF`
  • (Keyboard.IsKeyDown(Key.S)) - это подход WPF, в WinForms вам лучше использовать комбинацию e.KeyValue & Keys
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...