.net winform 的 OnKeyDown 与 方向键

  随手写了一个小程序,突然遇到一个问题:

  在自定义的控件中,override了一个OnKeyDown,用于处理方向键。结果,无效,跟踪调试发现,方向键无法进入函数断点,但其它如数字字母等键可以。

  上网查了一下,发现不少人遇到同样的问题。不过不是在自定义控件中,是在窗体中。当然,解决的方法很简单,设置KeyPreview为true就可以了。

  自定义控件可没有KeyPreview属性。

  为什么方向键会这么特殊?很简单,原来,方向键、制表键(Tab)等用于窗体中的各个子控件的焦点切换,因此在OnKeyDown之前就被截获并处理掉了。

  知道原因了,解决起来就好办了:

  在自定义控件中如需要处理方向键,应该override OnPreviewKeyDown/OnPreviewKeyUp等弊病数就可以了。

posted @ 2008-08-18 16:13  沐枫  阅读(1953)  评论(0编辑  收藏  举报