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

前段时间因为这种同时触发多个键盘事件的问题,搞的很是头痛, 

现在总算是出来了,

这里需要用到List<T>泛型集合

首先来个静态的集合用来存储已经按下的键的集合,然后就是运行该集合中的所有键盘事件;当然,在放开某个键的时候要将其从键盘的集合中除去,再次运行就OK了

以下是一个简单的示例

static List<char> pressChar = new List<char>();

 

巧妙地运用KeyPressKeyUp事件

        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;

                }

            }

        }

这样就可以运行所有的正在按下键的事件了.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值