2012-07-27 42 views
9

Tôi muốn có thể kéo tệp/tệp thực thi/lối tắt vào ứng dụng biểu mẫu cửa sổ và yêu cầu ứng dụng xác định đường dẫn ban đầu của tệp đã bị xóa rồi trả lại dưới dạng chuỗi?VB.net - kéo và thả và nhận đường dẫn tệp?

Ví dụ: kéo hình ảnh từ màn hình vào ứng dụng và hộp thông báo lên đường dẫn cục bộ của hình ảnh.

Điều đó có khả thi không? Ai đó có thể cung cấp cho tôi một ví dụ có thể?

Cảm ơn

Trả lời

30

Thật dễ dàng. Chỉ cần bật drap và thả bằng cách đặt thuộc tính AllowDrop thành True và xử lý các sự kiện DragEnterDragDrop.

Trong trình xử lý sự kiện DragEnter, bạn có thể kiểm tra xem dữ liệu có thuộc loại bạn muốn sử dụng lớp DataFormats hay không.

Trong trình xử lý sự kiện DragDrop, sử dụng thuộc tính Data của DataEventArgs để nhận dữ liệu thực tế.


Ví dụ:

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

Đây chỉ là một lưu ý rất rõ rằng nếu Kéo và Thả không hoạt động, nó có thể là do bạn đang chạy Visual Studio Administrator Mode (Windows 7 và tôi tin). Điều này cũng phải làm với mức UAC hiện được đặt trên Windows của bạn.

+0

Cân nhắc thực sự tốt (tuy nhiên, nó phải được thêm làm nhận xét trong câu trả lời hợp lệ) – JCM