DOBON.NET DOBON.NETプログラミング掲示板過去ログ

スクロールの同期、または抑止

環境/言語:[VisualBasic.NET]
分類:[.NET]

os:Windows2000
環境:VisualBasic.NET

こんにちは。
データグリッドの同時スクロールを以下の発言を参考にさせて頂き作成したのですが、

http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=3992&no=0

スクロールバーを動かすと同期がとれて2つのデータグリッドの行が動くのですが、
マウスホイールでのスクロールイベントを発生させてもフォーカスが当たっている
データグリッドの行しかスクロールしません。

マウスホイールでのスクロールイベントを拾って2つのデータグリッドの同期が
取れるようにイベントを発生させるべきだと思われるのですが手詰まりとなってしまいました。
いっその事、マウスホイールでのスクロールを抑止できればとも思っています。

マウスホイールでの同期スクロール、もしくは抑止を実現された方がいらっしゃいましたらお知恵を貸して頂けないでしょうか?
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=3992&no=0
のコードを、MouseWheel対応にしてみました。

Public Class MyDataGrid
Inherits System.Windows.Forms.DataGrid

Public Sub SetTopRow(ByVal rowNum As Integer)
Dim args As New ScrollEventArgs( _
ScrollEventType.LargeIncrement, rowNum)
GridVScrolled(Me, args)
End Sub

Public Event TopRowChanged(ByVal sender As Object, ByVal row As Integer)

Protected Overrides Sub GridVScrolled(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs)
MyBase.GridVScrolled(sender, e)
RaiseEvent TopRowChanged(Me, e.NewValue)
End Sub

Protected Overrides Sub OnMouseWheel(ByVal e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseWheel(e)
RaiseEvent TopRowChanged(Me, MyBase.VertScrollBar.Value)
End Sub
End Class
早々のご指南ありがとうございます。
コードを移植して早速試したところ実現させる事が出来ました。

理屈が解らず、また発想自体が出来ないありさまですが徐々に理解していこうと思っています。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板