按键盘上的C#应用​​程序按钮

时间:2014-03-24 14:21:23

标签: c# keypress keyboard-events

我有一个示例C#应用程序,它有4个这样的按钮:

enter image description here

我希望当我按下其他按钮时,按下来自C#应用程序的对应按钮(当窗口被聚焦时)并同时用键盘按下。这该怎么做?我已尝试使用 KeyEventArgs KeyPress ,但我觉得我有点困惑。

LE:并且有可能同时按下2个按钮:

=============================================== =======

稍后编辑:我无法理解。我创建了一个新项目。整个代码是:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace test3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.KeyDown += Form1_KeyDown;
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Up) { MessageBox.Show("|"); }
        }
    }
}

这是新项目的全部代码,为什么在从键盘按下向上按钮时没有显示消息框?它正在为信件工作......

2 个答案:

答案 0 :(得分:1)

使用KeyUp和KeyDown。键盘事件不是由箭头键触发的。

Why does my KeyPressEvent not work with Right/Left/Up/Down?

编辑:这对我有用。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        this.KeyDown += Form1_KeyDown;
    }

    void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Up) { MessageBox.Show("|"); }
    }
}

答案 1 :(得分:1)

根据Up, Down, Left and Right arrow keys do not trigger KeyDown event

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    switch (keyData)
    {
        case Keys.Right:
            button1.PerformClick();
            return true;
        case Keys.Left:
             //...
        default:
            return base.ProcessCmdKey(ref msg, keyData);
    }
}