我有一个示例C#应用程序,它有4个这样的按钮:
我希望当我按下其他按钮时,按下来自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("|"); }
}
}
}
这是新项目的全部代码,为什么在从键盘按下向上按钮时没有显示消息框?它正在为信件工作......
答案 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);
}
}