我想要的是这样的
Arrow Key down例如,通过按button1
执行单击操作
ArrowKeyDown = button1.Click
并通过这样做单击我的图像在我的picturebox
. 和向上一样,right
和left
。
从您的按钮中获取所有代码。单击并将其放入单独的函数中。
然后您可以从您的 button1.Click 和您的按键 Down 事件中调用该函数。
在按下键的内部,您必须使用 if 语句和 e.KeyCode 来确保在调用子例程之前您拥有正确的键。
如果您的代码如下所示
private void button1_Click(object sender, EventArgs e)
{
//do something here
}
现在会更像这样
private void doSomething()
{
//do something here
}
private void button1_Click(object sender, EventArgs e)
{
doSomething();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
doSomething();
}
else if(e.keyCode==Keys.Right)
{
doSomethingElse();
}
//etc.etc
}
另一种更简洁的按键事件方法是使用 switch 语句
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Down:
doSomething();
break;
case Keys.Right:
//do Something Else
break;
case Keys.Up:
//do Something Else
break;
case Keys.Left:
//do Something Else
break;
default:
//they hit a key you did not handle
break;
}
}
您正在尝试使用,Form.KeyPreview
但在使用它之前,您必须设置表单的属性,KeyPreview = true
并且您提到Button Click
您可以通过使用.PerformClick Method
private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
this.KeyDown += new KeyEventHandler(Form1_KeyDown);
button1.Click += new EventHandler(button1_Click);
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Left:
button1.PerformClick();
break;
case Keys.Right:
button1.PerformClick();
break;
case Keys.Down:
button1.PerformClick();
break;
case Keys.Up:
button1.PerformClick();
break;
}
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Okay");
}