我的form里面有一个button和一个 combox忧郁焦点始终在button和combox上换来换去 所以我的form不能接受ketdown事件我把button和combox enable=false以后 问题是解决了 但是这个东西不能用了请问各位有更好的办法吗?

解决方案 »

  1.   

     private void Form1_Load(object sender, EventArgs e)
            {
                this.KeyPreview=true;
            }
      

  2.   

    this.KeyPreview=true; 没有用 我load以后 焦点还是在combox上  我用上下  就改变combox的text 接收不到键盘信息我用focus 也行不通
      

  3.   

    private void Form1_Load(object sender, EventArgs e)
            {
                this.KeyPreview = true;
            }        private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                this.Text = e.KeyCode.ToString();
            }
      

  4.   

    去截取系统的消息吧。
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        
        /* IntPtr ptr = this.textBox1.Handle;
        *  msg.HWnd在此处的msg中有HWnd,这个变量可以标示此时焦点处于那个控件上,因为每一个控件都有自己的句柄,而且都不相同,因此可以用此方法进行过滤消息,将button和一个 combox 的键盘事件放过
        */
        return base.ProcessCmdKey(ref msg, keyData);
    }
      

  5.   

    显然不能冒昧设置为false
    置灰以后要有操作使之可用
      

  6.   


    其实是这样的  我做了一个俄罗斯方快的小游戏  我需要用上下左右去控制 我的代码是没有问题的关键就是我运行以后 我没办法控制方块的移动form启动而游戏没启动之前  我的焦点在 combox上 这个控件是我控制速度的  我按上下 他就改变里面的items
    游戏运行以后 我的combox enable=false了
    他的焦点又在"开始"这个button上了  form依然接受不到我的键盘
    使用this.focus();结果依然你讲的办法太深了 我看啊没看过 不甚理解
      

  7.   

    问题解决了我游戏运行以后动态把他们设置enable=false游戏之前是true 这样就不影响使用了谢谢大家
      

  8.   

    哎  白高兴了
    开始button和combox动态设置enable=false没问题但是他的焦点又落在退出这个button上了郁闷啊