2012-07-27 14 views
9

मैं एक फ़ाइल/निष्पादन योग्य/शॉर्टकट को विंडोज़ फॉर्म एप्लिकेशन में खींचने में सक्षम होना चाहता हूं और एप्लिकेशन को गिराए गए फ़ाइल का मूल पथ निर्धारित करना है और फिर इसे स्ट्रिंग के रूप में वापस करना है?वीबी.net - खींचें और छोड़ें और फ़ाइल पथ प्राप्त करें?

उदा। छवि से स्थानीय छवि को ऐप और संदेशबॉक्स में डेस्कटॉप से ​​एक छवि खींचें।

क्या यह संभव है? क्या कोई मुझे शायद एक उदाहरण प्रदान कर सकता है?

धन्यवाद

उत्तर

30

यह काफी आसान है। AllowDrop प्रॉपर्टी को True पर सेट करके केवल DragEnter और DragDrop ईवेंट को संभालकर ड्रैप-एंड-ड्रॉप सक्षम करें।

DragEnter ईवेंट हैंडलर में, आप यह जांच सकते हैं कि डेटा DataFormats कक्षा का उपयोग करने के प्रकार के प्रकार का है या नहीं।

DragDrop ईवेंट हैंडलर में, DataDataEventArgs की वास्तविक डेटा प्राप्त करने के लिए संपत्ति का उपयोग करें।


उदाहरण:

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

यह वह जगह है सिर्फ एक टिप्पणी तो राज्य करता है, तो खींचें और छोड़ें काम नहीं करता है, यह हो सकता है कि क्योंकि आप प्रशासक मोड (विंडोज 7 में दृश्य स्टूडियो चल रहे हैं और मैं विश्वास करता हूँ)। यह वर्तमान में आपके विंडोज़ पर सेट यूएसी स्तर के साथ भी करना है।

+0

वास्तव में अच्छा विचार (हालांकि इसे वैध उत्तर के तहत एक टिप्पणी के रूप में जोड़ा जाना चाहिए) – JCM

संबंधित मुद्दे