tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
2つのListViewのスクロールの同期を取る(VB.NET) ( No.0 )  [親スレッドへ]
日時: 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



 [スレッド一覧へ] [親スレッドへ]