दिलचस्प पोस्ट
एक्लिप्स खोज से फ़ोल्डरों को बाहर निकालें सीडीआई: बीन्स। एक्सएमएल, मैं आपको कहां रखता हूं? 'नया' कीवर्ड वास्तव में जावा में क्या करता है, और क्या मुझे नये ऑब्जेक्ट बनाने से बचने चाहिए? जावास्क्रिप्ट: अब सेट करने के लिए setInterval () कैसे प्राप्त करें? संपादन टेक्स्ट फ़ील्ड से एंड्रॉइड मिले टेक्स्ट Internet Explorer में Mozilla's toSource () विधि को लागू करना इसमें एक परिभाषा है, लेकिन कोई सम्मिलन नहीं है किसी एक्सेस डाटाबेस में एक अटैचमेंट फ़ील्ड से फ़ाइलें निकाले जा रहे हैं एकाधिक कॉलम पर समूह का उपयोग करना रिश्ते को बदला नहीं जा सका क्योंकि एक या अधिक विदेशी-प्रमुख गुण अबाधित हैं एक्सेल VBA – तिथि करने के लिए पाठ कन्वर्ट? अमेज़ॅन एस 3 में एक बाल्टी को सार्वजनिक करें क्या अजगर का समर्थन मल्टीप्रोसेसर / मल्टीकोर प्रोग्रामिंग है? पीएलएसक्यूएल जेडीबीसी: आखिरी पंक्ति आईडी कैसे प्राप्त करें? कैसे ढाल के साथ सूत्रों का जार बनाने के लिए

मैं किसी एप्लिकेशन में फ़ाइलों को कैसे खींच और खींचूँ?

मैंने इसे Borland के टर्बो सी ++ वातावरण में देखा है, लेकिन मुझे यकीन नहीं है कि इसके बारे में सी # एप्लिकेशन पर काम करने के लिए कैसे जाना है I क्या सर्वोत्तम प्रथाएं हैं या इसके बारे में जानने के लिए?

वेब के समाधान से एकत्रित समाधान "मैं किसी एप्लिकेशन में फ़ाइलों को कैसे खींच और खींचूँ?"

कुछ नमूना कोड:

public partial class Form1 : Form { public Form1() { InitializeComponent(); this.AllowDrop = true; this.DragEnter += new DragEventHandler(Form1_DragEnter); this.DragDrop += new DragEventHandler(Form1_DragDrop); } void Form1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; } void Form1_DragDrop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); foreach (string file in files) Console.WriteLine(file); } } 

विस्टा विस्टा / विंडोज 7 सुरक्षा अधिकारों के बारे में जागरूक रहें – यदि आप विजुअल स्टूडियो को व्यवस्थापक के रूप में चला रहे हैं, तो आप दृश्य स्टूडियो के भीतर से चलाने के दौरान गैर-व्यवस्थापक एक्सप्लोरर विंडो से फाइल को अपने कार्यक्रम में खींच नहीं पाएंगे। ड्रैग संबंधित घटनाओं को भी आग नहीं होगा! मुझे उम्मीद है कि इससे किसी और को मदद मिलेगी और वहां से उनके जीवन का कुछ समय बर्बाद नहीं होगा …

Windows फॉर्म में, नियंत्रण की अनुमति दें संपत्ति को सेट करें, फिर ड्रैगएन्टर ईवेंट और ड्रैड्रॉप ईवेंट के लिए सुनो।

जब DragEnter ईवेंट आग लगाता है, तर्क के AllowedEffect को किसी के अलावा अन्य किसी चीज़ के लिए सेट करें (जैसे e.Effect = DragDropEffects.Move )।

जब DragDrop इवेंट आग लगती है, तो आपको तार की एक सूची मिल जाएगी। प्रत्येक स्ट्रिंग फ़ाइल को समाप्त होने के लिए पूर्ण पथ है

आपको एक पकड़ के बारे में पता होना चाहिए। ड्रैग / ड्रॉप ऑपरेशन में डेटा ऑब्जेक्ट के रूप में किसी भी वर्ग को पास करना सीरियलजबल होना चाहिए। इसलिए यदि आप किसी ऑब्जेक्ट की कोशिश करते हैं और पास करते हैं, और यह काम नहीं कर रहा है, तो सुनिश्चित करें कि इसे क्रमबद्ध किया जा सकता है क्योंकि यह लगभग निश्चित रूप से समस्या है। इसने मुझे कई बार पकड़ लिया है!

फिर भी एक और पकड़:

फ्रेमवर्क कोड जो ड्रैग-इवेंट को कॉल करता है, सभी अपवादों को निगलता है आप सोच सकते हैं कि आपका इवेंट कोड सुचारू रूप से चल रहा है, जबकि यह सभी स्थानों पर अपवादों को उगल रहा है। आप उन्हें देख नहीं सकते क्योंकि फ्रेमवर्क उन्हें चुरा रहा है

यही कारण है कि मैं हमेशा इन घटना संचालकों में एक प्रयास / पकड़ डालता हूं, बस मुझे पता है कि क्या वे कोई अपवाद फेंक देते हैं। मैं आमतौर पर एक डिबगर डालता हूं। ब्रेक (); पकड़ भाग में

रिहाई करने से पहले, परीक्षण के बाद, अगर सब कुछ व्यवहार करने लगता है, मैं इन्हें असली अपवाद हैंडलिंग के साथ निकाल या प्रतिस्थापित करता हूं।

एक और सामान्य पकड़ वाला यह सोच रहा है कि आप फॉर्म ड्रैगऑवर (या ड्रैगएन्टर) की घटनाओं को अनदेखा कर सकते हैं। मैं आम तौर पर AllowedEffect सेट करने के लिए प्रपत्र का ड्रैगऑवर इवेंट का उपयोग करता हूं, और फिर गिराए गए डेटा को नियंत्रित करने के लिए एक विशिष्ट नियंत्रण की ड्रैड्रॉप इवेंट।

यहाँ कुछ है जो मैंने फाइलों और / या फ़ाइलों से भरा फ़ोल्डर्स को छोड़ा था। मेरे मामले में मैं *.dwg फ़ाइलों के लिए फ़िल्टरिंग कर रहा था और सभी सबफ़ोल्डर्स को शामिल करना चुना

fileList एक IEnumerable या समान है मेरे मामले में एक WPF नियंत्रण के लिए बाध्य था …

 var fileList = (IList)FileList.ItemsSource; 

उस चाल के विवरण के लिए https://stackoverflow.com/a/19954958/492 देखें

ड्रॉप हैंडलर …

  private void FileList_OnDrop(object sender, DragEventArgs e) { var dropped = ((string[])e.Data.GetData(DataFormats.FileDrop)); var files = dropped.ToList(); if (!files.Any()) return; foreach (string drop in dropped) if (Directory.Exists(drop)) files.AddRange(Directory.GetFiles(drop, "*.dwg", SearchOption.AllDirectories)); foreach (string file in files) { if (!fileList.Contains(file) && file.ToLower().EndsWith(".dwg")) fileList.Add(file); } }