关于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;
}
}
}
这样就可以运行所有的正在按下键的事件了.....
现在总算是出来了,
这里需要用到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;
}
}
}
这样就可以运行所有的正在按下键的事件了.....
相关文章推荐
- C#中winform实现自动触发鼠标、键盘事件的方法
- 关于键盘触发事件和屏幕触发事件的问题
- 关于键盘触发事件和屏幕触发事件的问题
- 关于验证同时的事件触发
- CTRL键+键盘键触发控件事件-WinForm
- C#/winform 自动触发鼠标、键盘事件
- 关于.Net WinForm 中的控件失去焦点时触发事件的问题
- 关于.Net WinForm 中的控件失去焦点时触发事件的问题
- 关于UseSubmitBehavior和OnClientClick同时使用,导致无法触发后台事件的问题
- 关于键盘触发事件和屏幕触发事件的问题
- winform中关于panel中滚动条和键盘事件几点体会
- 关于键盘触发事件和屏幕触发事件的问题
- 关于UseSubmitBehavior和OnClientClick同时使用,导致无法触发后台事件的问题
- iOS 利用运行时交换系统方法实现禁止同时点击两个按钮触发多个事件
- 关于jquery on方法进行事件绑定触发次数指数叠加的问题
- 关于在c#中创建用户控件后,winform应用程序在调用中无法通过点击用户控件的子控件为其自动添加事件代码的问题
- System.Web.Caching.Cache删除某键后,希望同时触发其它动作(关键时刻,还是事件靠的住)
- 关于WPF后台触发键盘按键
- ios 自带输入法无法触发 keyup等键盘事件的修复
- android防止提交事件时触发多个表单中的按钮