• ベストアンサー

ListBoxでの Drag&Dropについて

List1で複数選択された項目をList2へドラッグ&ドロップでコピ ーしようと思います。 まず最初にList1のListIndex(1-3)を選択し色を反転させるとし ます。 その状態でドラッグ&ドロップを開始しようとし、List1の任意 のListIndexの部分をクリックするとその後からクリックされた 任意のListIndexの部分がドラッグ&ドロップの対象になり、最 初に予定したListIndex1-4は選択が解除されてしまいます。 これを回避するにはどのようにすればいいのでしょうか? VB6です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tak2003
  • ベストアンサー率32% (174/540)
回答No.2

D&Dでチャレンジしてみたのですが、DRAG中にセレクトが変わるので確定させて選択項目を配列に入れたりすると出来そうですね。 セレクトして確定コマンドなぞ押すか、確定してから一定時間で決定としてからドラッグするようにしないと無理そうですよ。 設計を見直したほうが良いみたいですね。 単にD&DしただけではSELECTEDが動いて駄目でした。 楽しそうな課題なのでがんばってください。

urourojp
質問者

補足

>DRAG中にセレクトが変わるので確定させて選択 >項目を配列に入れたりすると出来そうですね。 実質それでセレクトされていたIndexは取得可能 だと思うんですが、いざ、D&Dをしようとすると 色の反転している部分が後からセレクトされて いる部分に移動してしまって、直感的でないんで すよねぇ。 標準機能であっても良さそうな気もするんです が・・(-_-;)

その他の回答 (1)

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.1

Private Sub Command1_Click() Dim flg As Boolean '重複フラグ Dim i As Integer 'リスト1の数 Dim j As Integer 'リスト2の数 For i = 0 To List1.ListCount - 1 If List1.Selected(i) = True Then flg = False For j = 0 To List2.ListCount - 1 If List2.List(j) = List1.List(i) Then flg = True Exit For End If Next j If flg = False Then List2.AddItem List1.List(i) End If End If Next i End Sub Private Sub Command2_Click() List2.Clear End Sub SHUWASYSTEMさんのサンプルソースです。 回答になっていないのですが、DRAG&DROPを使わないとこんな風にできますよ。

urourojp
質問者

補足

Commandボタンではできてたので、D&Dで書き直そうかと思いまして。。。

関連するQ&A