スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WinFormsでカーソルの位置にあるコントロールをスクロール

  • 2013/12/06 02:12
  • Category: C#
WinFormsではカーソルの位置に関係なく、現在フォーカスを持っているコントロールへホイールスクロールメッセージが送られます。
カーソルの下のコントロールにメッセージを送るためにはIMessageFilterとApplication.AddMessageFilterを使用します。

参考
http://social.msdn.microsoft.com/Forums/windows/en-US/eb922ed2-1036-41ca-bd15-49daed7b637c/outlookstyle-wheel-mouse-behavior?forum=winforms

元のコードではフォーム外でスクロールした際、フォーカスを持つコントロールがスクロールされるようなので少し改造しました。



そしてMain等でApplication.AddMessageFilterを呼び出せばOK。





12/08 追記
DataGridViewでは独自のToolTipを使用しているからか普通のToolTipとは表示位置が異なり、
カーソルがToolTipに乗ることがあります。
このときWindowFromPointはToolTipのハンドルを返すため、上のコードではToolTipの下にあるコントロールへスクロールメッセージが送られません。

なのでToolTip上にカーソルがある場合でも下のコントロールをスクロールするように
修正してみました。(応急処置気味)
DataGridViewで確認。他のコントロールってこの現象起こるんですかね…



スポンサーサイト

Pagination

Trackback

Trackback URL

http://someprog.blog.fc2.com/tb.php/8-07468c58

Comment

Post Your Comment

コメント登録フォーム
公開設定

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。