窗体想获取键盘敲击的键,需要以下步骤。
1在From窗口有个属性需要设置为真。
this.KeyPreview = true;
public Form1()
{
InitializeComponent();
this.KeyPreview = true;
}
2在代码段需要把键盘的方向键拉出来。要不然键盘就捕获不了方向键
protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Up || keyData == Keys.Down ||
keyData == Keys.Left || keyData == Keys.Right)
return false;
else
return base.ProcessDialogKey(keyData);
}
3在窗体的KeyDown事件,需要绑定事件,用于使键盘能激活事件
private void FrmModbus_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Left:
//DrawCir(this.BackColor);
//x = x - moveStep;
//DrawCir(Color.Red);
break;
case Keys.Right:
//DrawCir(this.BackColor);
//x = x + moveStep;
//DrawCir(Color.Red);
break;
case Keys.Up:
//DrawCir(this.BackColor);
//y = y - moveStep;
//DrawCir(Color.Red);
break;
case Keys.Down:
//DrawCir(this.BackColor);
//y += moveStep;
//DrawCir(Color.Red);
break;
default:
break;
}
}
//以上步骤就完成了。
下面看下完整代码吧
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 四个箭头移动圆球
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int x, y;
int moveStep = 5;
void DrawCir(Color color)
{
Graphics g = this.CreateGraphics();
Pen pen1 = new Pen(color);
SolidBrush brush1 = new SolidBrush(color);
g.DrawEllipse(pen1, x, y, 50, 50);
g.FillEllipse(brush1, x, y, 50, 50);
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Left:
DrawCir(this.BackColor);
x = x - moveStep;
DrawCir(Color.Red);
break;
case Keys.Right:
DrawCir(this.BackColor);
x = x + moveStep;
DrawCir(Color.Red);
break;
case Keys.Up:
DrawCir(this.BackColor);
y = y - moveStep;
DrawCir(Color.Red);
break;
case Keys.Down:
DrawCir(this.BackColor);
y += moveStep;
DrawCir(Color.Red);
break;
default:
break;
}
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
DrawCir(Color.Red);
}
}
}