您的位置:首页 > 其它

关于Winform中同时触发多个键盘事件

2011-12-13 11:22 375 查看
前段时间因为这种同时触发多个键盘事件的问题,搞的很是头痛,
现在总算是出来了,

这里需要用到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;

}

}

}

这样就可以运行所有的正在按下键的事件了.....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: