现在总算是出来了,
这里需要用到List<T>泛型集合
首先来个静态的集合用来存储已经按下的键的集合,然后就是运行该集合中的所有键盘事件;当然,在放开某个键的时候要将其从键盘的集合中除去,再次运行就OK了
以下是一个简单的示例
static List<char> pressChar = new List<char>();
巧妙地运用KeyPress和KeyUp事件
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
pressChar .Remove((char)e.KeyCode);
foreach (char c in pressChar )
{
switch (c)
{
case 'A': this.button1.Left -= 1;
break;
case 'D': this.button1.Left += 1;
break;
case 'W': this.button1.Top -= 1;
break;
case 'S': this.button1.Top += 1;
break;
}
}
}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if(!pressChar .Contains(e.KeyChar))
{
pressint.Add(e.KeyChar);
}
foreach (char c in pressChar )
{
switch (c)
{
case 'A': this.button1.Left -= 1;
break;
case 'D': this.button1.Left += 1;
break;
case 'W': this.button1.Top -= 1;
break;
case 'S': this.button1.Top += 1;
break;
}
}
}
这样就可以运行所有的正在按下键的事件了.....