- 日時: 2009/12/26 16:54
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[リストビュー][][] * * キーワード:ListView,スクロール,連動,同時にスクロール, * *********************************************************************************** タイトル : listviewのスクロールについて 記 事 No : 8261 投 稿 日 : 2008/10/02(Thu) 15:39 元質問者 : なぎ
ListView2、ListView3があり、どちらかのリストをスクロールした場合、もう一方の リストも同時にスクロールさせる方法はありますでしょうか?
----------------------------------------------------------------------------------- 記事No : 8302 投稿日 : 2008/10/08(Wed) 14:18 回答者 : 花ちゃん ----------------------------------------------------------------------------------- タイマーコントロールを使うなら、タイマーコントロール で 双方のTopItem.Index の 値の変化を監視して変化があった方にもう一方の方のTopItem.Index の値を設定すれば いいのではないでしょうか?
又は、下記で魔界の仮面弁士さんが投稿されているコードを応用するとか。 http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200407/200407_04070102.html
下記のような ListView を継承した ユーザーコントロールを作成する ----------------------------------------------------------------------- ユーザーコントロールの作成方法については、下記を参考にして下さい。 http://www.atmarkit.co.jp/fdotnet/vblab/vb2005m_10/vb2005m_10_01.html ----------------------------------------------------------------------- Public Class myListView Public Event TopIndexChanged() Protected Overrides Sub WndProc(ByRef m As Message) Const WM_VSCROLL As Integer = &H115 Select Case m.Msg Case WM_VSCROLL RaiseEvent TopIndexChanged() End Select MyBase.WndProc(m) End Sub Protected Overrides Sub OnMouseWheel(ByVal e As MouseEventArgs) If e.Delta <> 0 Then RaiseEvent TopIndexChanged() End If End Sub Protected Overrides Sub OnKeyDown(ByVal e As KeyEventArgs) RaiseEvent TopIndexChanged() End Sub Protected Overrides Sub OnKeyUP(ByVal e As KeyEventArgs) RaiseEvent TopIndexChanged() End Sub End Class
スクロールの同期をとる場合(Form1 内で) Private Sub MyListView1_TopIndexChanged() Handles MyListView1.TopIndexChanged MyListView2.EnsureVisible(MyListView2.Items.Count - 1) MyListView2.EnsureVisible(MyListView1.TopItem.Index) End Sub
Private Sub MyListView2_TopIndexChanged() Handles MyListView2.TopIndexChanged MyListView1.EnsureVisible(MyListView1.Items.Count - 1) MyListView1.EnsureVisible(MyListView2.TopItem.Index) End Sub
|