winform 应用程序中遇到这样的问题:
界面上有三个文本框TextBox1、TextBox2、TextBox3。在第一个文本框中按TAB键时,将会依次触发TextBox1_KeyUp事件、TextBox2__KeyUp事件。由于我在KeyUp事件里捕获TAB键,并设置其焦点移动到下一个控件中,因此,此时控件的焦点将会定位到第三个控件。有什么办法可以解决吗?
    也就是说,我不希望在第一个TextBox1中键TAB键后,系统会触发TextBox1_KeyUp事件、TextBox2__KeyUp事件,而应只触发第一个文本框的TextBox1_KeyUp事件.

解决方案 »

  1.   

    实际在VS2003中测试,不会触发两个KeyUp事件,只会触发textBox2的KeyUp。而且Tab键本来就是将焦点移动到下一个控件,不知道为什么还要多此一举的自己去移动焦点?
      

  2.   

    TAB键作为系统预处理的键,是无法在KeyPless事件中捕获的,如果要捕获他,只能取消其预处理的功能。所以,只能单独再写代码来实现TAB键移动焦点的功能。
        
      

  3.   

    可以把对Tab键的处理,统统放入ProcessTabKey内
      

  4.   

    但是我还是不明白你要取消Tab键的预处理方式来干什么,因为你取消之后,自己处理的结果也不过就是移动焦点到下一个控件,不是和Tab本来的处理方式相同吗?另外正如我前面所说的,事件只会在获得焦点的控件上触发,而不会在前一个控件上触发,不知道你还加入了其他的键盘事件处理函数没有。