2010-08-11 123 views
0

我有一个窗口中有几个窗体和控件的应用程序。其中之一是一个自定义控件,它具有两个垂直和水平的成员滚动条。现在,当我按下键盘的箭头键(使用该自定义控件选择/焦点对齐)时,滚动条将获得事件Scrollbar.Scroll。但为了其他目的,我需要处理箭头键,只有鼠标才能滚动。如何从自定义控件中的滚动条禁用键盘

自定义控件的OnKeyDown仅在两个滚动条中的任何一个焦点位于第一个键击之后才会收到该事件。所以,我没有第一个箭头处理,这是不好的。

我也尝试添加处理程序到Scrollbar.KeyDown事件。不工作。

如何处理箭头以便它不滚动视图?

回答

0

尝试使用PreviewKeyDown事件。

它在按下按键之前检查它。

+0

没有运气,PreviewKeyDown也会在滚动条获得焦点后作出响应,这又是第一个键之后! 但是,我正在使滚动条集中控制工作我的选项,不喜欢它。 – kaiserasif 2010-08-13 10:13:18

+0

你需要滚动条是可以调焦吗?如果没有,你可以禁用它。 – Wildhorn 2010-08-13 13:32:02

+0

我需要使用鼠标滚动。所以不能禁用。 对我之前评论的一个更正,我使用了滚动条的PreviewKeyDown,这就是为什么需要关注。自定义控件的PreviewKeyDown工作!谢谢。 – kaiserasif 2010-08-13 14:34:52

3

你可以尝试在预定的组件超载ProcessDialogKey如下:

protected override bool ProcessDialogKey(Keys keyData) 
{ 
    return true; 
} 

就像一个魅力。

+0

你先生是个天才......正是我在寻找的东西 – 2012-10-14 01:27:38