tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
ListBox・CheckedListBoxで項目をドラッグ&ドロップで移動(VB.NET) ( No.0 )  [親スレッドへ]
日時: 2012/02/07 11:08
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[リストボックス][][]                                                *
* キーワード:ドラッグ&ドロップ,マウス,項目の移動,,,                           *
***********************************************************************************
タイトル : CheckedListBox内での移動
記 事 No : 9329
投 稿 日 : 2009/09/01(Tue) 18:06
元質問者 : bin  

Vb2008 express edition を使用しています。
CheckedListBoxで項目をドラッグ&ドロップで移動させ、順番をかえたいのですが、
方法がわかりません

-----------------------------------------------------------------------------------
記事No : 9344
投稿日 : 2009/09/02(Wed) 16:55
回答者 : ダンボ  
-----------------------------------------------------------------------------------
> > 問題点:原案はListBoxだったからこれで良いが、bin さんの希望はCheckedListBox。
> >     Checkedステータスの移動は追加しなければいけない。

下記でうまく動いたからご参考までに(苦労しないと勉強にならないか?)

Public Class Form1
   Dim listSelectNo As Integer
Private Sub Form1_Load(ByVal sender As Object, _
                  ByVal e As System.EventArgs) Handles Me.Load
   Dim str As String() = {"aaa", "bbb", "ccc", "ddd", "eee"}
   CheckedListBox1.Items.AddRange(str)
   ListBox1.Items.AddRange(str)
End Sub
Private Sub CheckedListBox1_MouseDown(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.MouseEventArgs) Handles CheckedListBox1.MouseDown
   '        //移動元のインデックスを取得
   Dim list As CheckedListBox = CType(sender, CheckedListBox)
   listSelectNo = list.SelectedIndex
End Sub
Private Sub ListBox1_MouseDown(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
   Dim list As ListBox = CType(sender, ListBox)
   listSelectNo = list.SelectedIndex
End Sub

Private Sub CheckedListBox1_MouseUp(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.MouseEventArgs) Handles CheckedListBox1.MouseUp
   '        //移動先のインデックスを取得
   Dim list As CheckedListBox = CType(sender, CheckedListBox)
   Dim listChangeNo As Integer = list.SelectedIndex
   If listChangeNo <> listSelectNo Then
      Dim tmpData As Object, tmpState As CheckState
      '        //移動元のデータを取得
      tmpData = list.Items(listSelectNo)
      tmpState = list.GetItemCheckState(listSelectNo)
      '        //移動元のデータを削除
      list.Items.RemoveAt(listSelectNo)
      '        //移動先にデータを追加
      list.Items.Insert(listChangeNo, tmpData)
      list.SetItemCheckState(listChangeNo, tmpState)
      '        //選択先のインデックスを指定
      list.SelectedIndex = listChangeNo
   End If
End Sub
Private Sub ListBox1_MouseUp(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseUp
   '        //移動先のインデックスを取得
   Dim list As ListBox = CType(sender, ListBox)
   Dim listChangeNo As Integer = list.SelectedIndex
   If listChangeNo <> listSelectNo Then
      Dim tmpData As Object
      '        //移動元のデータを取得
      tmpData = list.Items(listSelectNo)
      '        //移動元のデータを削除
      list.Items.RemoveAt(listSelectNo)
      '        //移動先にデータを追加
      list.Items.Insert(listChangeNo, tmpData)
      '        //選択先のインデックスを指定
      list.SelectedIndex = listChangeNo
   End If
End Sub
End Class

※ ついでに、ListBox の方も実装してみました。 By 花ちゃん

上記実行図(画像をクリックすると元のサイズで見る事ができます。)



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