|
分類:[.NET 全般]
VB.NETで TableLayoutPanel の別のセル内にListboxを二つ配置しました。 この状態でListboxにファイルをD&Dすることで D&Dしたファイルリストを取得するプログラムを作りたいのですが うまくいきません。
Listbox単体だと以下のコードで取得することができます。
Private Sub ListBox1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles ListBox1.DragEnter
' ドラッグ&ドロップされたファイル Dim files() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())
End Sub
Private Sub ListBox1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs)
Call Drag_ent(e)
End Sub
Private Sub Drag_ent(ByVal e As DragEventArgs)
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
' ドラッグ中のファイルやディレクトリの取得 Dim drags() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())
For Each d As String In drags
If Not System.IO.File.Exists(d) And Not System.IO.Directory.Exists(d) Then
' ファイル以外であればイベント・ハンドラを抜ける Return
End If
Next
e.Effect = DragDropEffects.Copy End If
End Sub
しかしTableLayoutPanel内に入っていると D&Dを受け付けなくなります。
そのため、以下のようにしてTableLayoutPanelにもD&D設定を行ってみたのですが DragEnterはうまくいくのですが DragDropをどのように設定すれば良いか分かりません。 どうすれば良いでしょうか?
Private Sub TableLayoutPanel1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles TableLayoutPanel1.DragEnter
Call Drag_ent(e)
End Sub
Private Sub TableLayoutPanel1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles TableLayoutPanel1.DragDrop '?????????????
End Sub
|