2009-04-07 28 views
13

मेरे पास एक WPF नियंत्रण है और मैं अपने डेस्कटॉप से ​​एक विशिष्ट फ़ाइल को इस नियंत्रण में छोड़ना चाहता हूं। यह एक भारी हिस्सा नहीं है लेकिन मैं ड्रॉप एक्सटेंशन को अनुमति देने या अस्वीकार करने के लिए फ़ाइल एक्सटेंशन को देखना चाहता हूं। इस समस्या को हल करने का सबसे अच्छा तरीका क्या है?डब्ल्यूपीएफ फाइलड्रॉप इवेंट: बस एक विशिष्ट फ़ाइल एक्सटेंशन

उत्तर

25

मुझे लगता है कि यह काम करना चाहिए:

<Grid> 
    <ListBox AllowDrop="True" DragOver="lbx1_DragOver" 
                 Drop="lbx1_Drop"></ListBox> 
</Grid> 

चलो मान लेते हैं तो आप केवल सी # फ़ाइलों सकते हैं:

private void lbx1_DragOver(object sender, DragEventArgs e) 
{ 
    bool dropEnabled = true; 
    if (e.Data.GetDataPresent(DataFormats.FileDrop, true)) 
    { 
     string[] filenames = 
         e.Data.GetData(DataFormats.FileDrop, true) as string[]; 

     foreach (string filename in filenames) 
     { 
     if(System.IO.Path.GetExtension(filename).ToUpperInvariant() != ".CS") 
     { 
      dropEnabled = false; 
    break; 
     } 
     } 
    } 
    else 
    { 
     dropEnabled = false; 
    } 

    if (!dropEnabled) 
    { 
     e.Effects = DragDropEffects.None; 
    e.Handled = true; 
    }    
} 


private void lbx1_Drop(object sender, DragEventArgs e) 
{ 
    string[] droppedFilenames = 
         e.Data.GetData(DataFormats.FileDrop, true) as string[]; 
} 
+3

सही है, धन्यवाद! मैं बस उस कर्सर को चमकाने के कुछ साइड इफेक्ट्स को रोकने के लिए जोड़ूंगा जब आप उस नियंत्रण के बच्चों पर जाते हैं जिन्हें आप छोड़ रहे हैं, तो आप इसे जोड़ सकते हैं: DragEnter = "lbx1_DragOver" ड्रैगइंटर ईवेंट पर चेक करने के लिए साथ ही ड्रैगओवर पर भी। – David

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