2012-08-24 14 views
10

का उपयोग करके चुनी जा सकने वाली फ़ाइलों को सीमित करना मुझे यह सी # विंडोज़ फॉर्म एप्लिकेशन मिला है जहां मैं कुछ कार्य संचालन के लिए या तो XML फ़ाइल या CSV फ़ाइल लोड करता हूं। मुझे ब्राउज बटन मिला। जब मैं ब्राउज़ बटन पर क्लिक करता हूं, तो ओपन फ़ाइल संवाद बॉक्स प्रकट होता है और मैं अपने ड्राइव पर किसी स्थान पर नेविगेट कर सकता हूं और फ़ाइल चुन सकता हूं और फिर इसे अपलोड बटन का उपयोग करके अपलोड कर सकता हूं। यदि मैं एक जेपीजी या ज़िप फ़ाइल या कोई फ़ाइल लोड करता हूं जिसका प्रारूप CSV या XML को छोड़कर कुछ भी है, तो मेरा एप्लिकेशन क्रैश हो जाता है। सी # में अकेले सीएसवी या एक्सएमएल फाइलों को खोलने के लिए ओपन फाइल डायलॉग बॉक्स को सीमित करने का कोई तरीका है?ओपन फाइल संवाद बॉक्स

+0

आप अपलोड करने से पहले एक्सटेंशन को मान्य क्यों नहीं करते? –

उत्तर

23

उपयोग

openFileDialog.Filter = "CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml"; 

इस तरह से केवल csv फ़ाइलें या एक्सएमएल फ़ाइलें दिखाए जाते हैं। लेकिन फिर भी यदि वे पूर्ण नाम टाइप करते हैं तो उपयोगकर्ता अन्य फ़ाइल प्रकारों का चयन भी कर सकते हैं - इसलिए चयनित फ़ाइल नाम की जांच करें और तदनुसार अपना कोड सही करें।

+0

सुपर एक दोस्त :)) – user1501034

+2

आप फ़िल्टर को भी जोड़ सकते हैं ताकि उपयोगकर्ता दोनों सीएसवी और एक्सएमएल फाइलों को देख सकें, जैसे: openFileDialog.Filter = "डेटा फाइलें | * .csv; *। Xml"; – sventevit

0

आप उपयोगकर्ता को एक निश्चित प्रकार की फ़ाइल चुनने के लिए Filter संपत्ति का उपयोग कर सकते हैं।

हालांकि! यह गारंटी नहीं है। एक उपयोगकर्ता अभी भी फ़ाइल नाम बॉक्स में '(स्टार)। (स्टार) इनपुट करने में सक्षम है और सभी फाइलें दिखाता है। इसलिए आपको अपने कोड में परिणामस्वरूप फ़ाइल (ओं) की जांच करनी चाहिए।

आप इसे Path.GetExtension() विधि से कर सकते हैं।

0

आप अपने ओपन फ़ाइल संवाद में एक फ़िल्टर लागू कर सकते हैं जो ऊपर वर्णित .xml और csv फ़ाइलों को दिखाता है। path.getextension http://msdn.microsoft.com/en-us/library/system.io.path.getextension.aspx के साथ आप यह जांच सकते हैं कि उपयोगकर्ता ने वास्तव में सही एक्सटेंशन वाली फ़ाइल चुनी है या नहीं। यदि कोई गलत एक्सटेंशन चुना गया है, तो आप एक अलग फ़ाइल का चयन करने के लिए संकेत दे सकते हैं।

मैं अपलोड करने से पहले फ़ाइल एक्सटेंशन की जांच करने की दृढ़ता से अनुशंसा करता हूं। उपयोगकर्ता ने फ़ाइल का चयन करने के बाद बस एक्सटेंशन की जांच करें। अगर गलत फाइलों का चयन किया गया था, तो बस अपलोड/प्रोसेसिंग जारी रखें ...

0

यह पूर्ण उदाहरण है।

/// <summary> 
    /// Select CSV/XML file 
    /// </summary> 
    /// <param name="sender"> 
    /// The sender. 
    /// </param> 
    /// <param name="e"> 
    /// The e. 
    /// </param> 
    private void SelectCsvFile(object sender, EventArgs e) 
    { 
     var dlg = new OpenFileDialog 
         { 
          Filter = @"CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml", 
          CheckFileExists = true, 
          Title = @"Select csv/xml file to read", 
          Multiselect = false 
         }; 
     dlg.ShowDialog(); 
     if (dlg.FileName == string.Empty) 
     { 
      MessageBox.Show(
       @"You didn't select any file !", 
       @"No file was selected", 
       MessageBoxButtons.OK, 
       MessageBoxIcon.Asterisk); 
     } 
     else 
     { 
      this.txtCSVFilePath.Text = dlg.FileName; 
     } 
    } 
संबंधित मुद्दे