tagCANDY CGI VBレスキュー(花ちゃん) - 2つのListViewのスクロールの同期を取る(VB.NET) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
2つのListViewのスクロールの同期を取る(VB.NET)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

2つのListViewのスクロールの同期を取る(VB.NET) [No.197の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.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
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ