2012-07-27 54 views
9

私はファイル/実行可能ファイル/ショートカットをWindowsフォームアプリケーションにドラッグして、アプリケーションがドロップされたファイルの元のパスを特定して文字列として返すようにしたいと思っていますか?VB.net - ドラッグ&ドロップしてファイルパスを取得しますか?

など。画像をデスクトップからアプリケーションにドラッグし、メッセージボックスを画像のローカルパスの上にドラッグします。

これは可能ですか?誰か私に例を教えてもらえますか?

ありがとうございました

答えて

30

非常に簡単です。 AllowDropプロパティをTrueに設定し、DragEnterDragDropイベントを処理するだけで、ドレープアンドドロップを有効にしてください。

DragEnterイベントハンドラでは、データがDataFormatsクラスを使用して必要なタイプかどうかを確認できます。

DragDropイベントハンドラでは、DataEventArgsDataプロパティを使用して実際のデータを受け取ります。


例:

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    Me.AllowDrop = True 
End Sub 

Private Sub Form1_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop 
    Dim files() As String = e.Data.GetData(DataFormats.FileDrop) 
    For Each path In files 
     MsgBox(path) 
    Next 
End Sub 

Private Sub Form1_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter 
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then 
     e.Effect = DragDropEffects.Copy 
    End If 
End Sub 
2

これは(ドラッグ&ドロップが動作しない場合は、管理者モードでのVisual Studioを実行しているので、それができるという状態ので、ちょうどノートでWindows 7と私は信じている)。これは現在Windowsに設定されているUACレベルと関係があります。

+0

本当に良い考えです(ただし、有効な回答の下にコメントとして追加する必要があります) – JCM

関連する問題