プロが教えるわが家の防犯対策術!

リストボックスのアイテムをマウスのドラッグドロップで並べ替えたいのですが、
下のような感じで書いてみたのですが、
この状態だと、4番目のものを一番上に持ってくるという動作だけするのですが、
4番目から3番目に移動する場合や、1番目から3番目に移動する場合など
追加していくとIFが重なってきてすごくややこしくなってしまいます。

もっと分かりやすくて合理的な方法がありましたら、
大体でも良いですので、教えて頂けたら助かります。
よろしくおねがいいたします。

Private Sub Form1_Load(...略
ListBox1.Items.Add("AAA")
ListBox1.Items.Add("BBB")
ListBox1.Items.Add("CCC")
ListBox1.Items.Add("EEE")
End Sub

Private Sub ListBox1_MouseDown(...略
SelectedSortFrom = ListBox1.SelectedIndex
End Sub

Private Sub ListBox1_MouseUp(...略
SelectedSortTo = ListBox1.SelectedIndex
ListBox1Sort(SelectedSortFrom, SelectedSortTo)
End Sub

Private Function ListBox1Sort(ByVal From As Integer, ByVal Too As Integer)

If From = -1 Then Exit Function
If Too = -1 Then Exit Function

Dim A(ListBox1.Items.Count) As String
Dim B As Boolean

For i As Integer = 0 To ListBox1.Items.Count - 1
A(i) = ListBox1.Items(i)
Next

For i As Integer = 0 To ListBox1.Items.Count - 1
If i = Too Then
ListBox1.Items(i) = A(From)
B = True
Else
ListBox1.Items(i) = A(i - 1)
End If
Next
End Function

A 回答 (2件)

お世話になります。



参考 URL にそのままのコードが載っています。

参考URL:http://santamartadotnet.hp.infoseek.co.jp/docume …
    • good
    • 0

マウスのUPとDOWNでやらざるを得ない以上、関数化を進めてちょっと楽にするぐらいしか工夫のしようがないでしょう。


普通にやられているようにアクティブになっているアイテムをボタンで上下の方がはるかに手っ取り早くまたバグも少ないし、コードもきれいになるしでお勧めかと思いますが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!