C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: TableLayoutPanel 内でのD&D


(過去ログ 137 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■80842 / inTopicNo.1)  TableLayoutPanel 内でのD&D
  
□投稿者/ tata (7回)-(2016/08/13(Sat) 18:52:54)

分類:[.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






引用返信 編集キー/
■80843 / inTopicNo.2)  Re[1]: TableLayoutPanel 内でのD&D
□投稿者/ Azulean (684回)-(2016/08/13(Sat) 21:14:36)
No80842 (tata さん) に返信
> Private Sub TableLayoutPanel1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles TableLayoutPanel1.DragEnter
(略)
> Private Sub TableLayoutPanel1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles TableLayoutPanel1.DragDrop

TableLayoutPanel に入っていても、ListBox は ListBox ですから、ListBox1 とか ListBox2 の DragEnter や DragDrop に対して Handles で結びつけてください。
今のコードは TableLayoutPanel に対するドラッグ&ドロップ処理になってしまっています。
引用返信 編集キー/
■80844 / inTopicNo.3)  Re[2]: TableLayoutPanel 内でのD&D
□投稿者/ tata (9回)-(2016/08/13(Sat) 21:31:17)
ありがとうございます。
仰るとおり、Handles が抜けているのが原因でした。
TableLayoutPanel をいじっている間になぜか消えてしまっているようでした。
 
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -