码迷,mamicode.com
首页 > Windows程序 > 详细

winform 按键控制

时间:2015-12-12 10:57:03      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

用ADSW来控制前后左右,J表示开火,J不能连续按

_+表示速度档位、

技术分享
 DateTime _LastPress = DateTime.MinValue;
        Keys _PrevKey = Keys.None;
        List<Keys> CtlKeys = new List<Keys>() { Keys.A, Keys.D, Keys.S, Keys.W, Keys.J, Keys.Add, Keys.Subtract };
        protected override bool ProcessKeyPreview(ref Message m)
        {
           
            
            var key = (Keys)m.WParam.ToInt32();
            if (!CtlKeys.Contains(key))
            {
                return false;
            }
            if (m.Msg == WM_KEYDOWN)
            {
                if (key == Keys.J && _PrevKey==key)
                {
                    
                    

                    var delay=(DateTime.Now - _LastPress).TotalMilliseconds ;
                    Console.WriteLine(delay);
                        
                    if (delay < 1000)
                    {
                        Console.WriteLine("连续按J");
                        _LastPress = DateTime.Now;
                        return true;
                    }
                }
                Console.Write("按下->");
                Console.WriteLine(key);
                _PrevKey = key;
                _LastPress = DateTime.Now;
             
            }
            if (m.Msg == WM_KEYUP)
            {
                Console.Write("释放->");
                Console.WriteLine(key);
            }


            
            return base.ProcessKeyPreview(ref m);
        }
View Code

 

winform 按键控制

标签:

原文地址:http://www.cnblogs.com/wdfrog/p/5040803.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!