2012-05-09 13 views
6

मैं सी # में नौसिखिया हूं और मेरे पास 2 सूची बॉक्स हैं l>> istBox1 और listBox2 और मैं इन सूची बॉक्स में फ़ोल्डर से फ़ाइलें लोड करना चाहता हूं। मैं इस तरह की कोशिश की: listBox1:सी # विंडोज़ फॉर्म में किसी फ़ोल्डर से किसी सूची बॉक्स में फ़ाइलों को पॉप्युलेट करें

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      DirectoryInfo dinfo = new DirectoryInfo(@"C:\TestLoadFiles"); 
      FileInfo[] Files = dinfo.GetFiles("*.rtdl"); 
      foreach (FileInfo file in Files) 
      { 
       listbox1.Items.Add(file.Name); 
      } 

     } 

listBox2:

private void listBox2_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      DirectoryInfo dinfo = new DirectoryInfo(@"C:\TestLoadFiles"); 
      FileInfo[] Files = dinfo.GetFiles("*.dlz"); 
      foreach (FileInfo file in Files) 
      { 
       listbox2.Items.Add(file.Name); 
      } 
     } 

जब मैं प्रपत्र चलाने के लिए, फ़ोल्डर से फाइल दिखाई नहीं दे रहा ???

+0

अच्छा। और अब आपका सवाल क्या है? – Reniuz

+0

क्या समस्या है? listbox1 के लिए selectindexchanged हैंडलर में, आप फिर से सूचीबॉक्स 1 – rt2800

+0

पॉप्युलेट कर रहे हैं, वास्तव में ... – Tigran

उत्तर

11

सूची के बजायबॉक्स 1_SelectedIndexChanged, कुछ बटन क्लिक के विरुद्ध सूची बॉक्स अपडेट करें, अन्यथा आपका कोड ठीक दिखता है। प्रारंभ में आपके पास शायद आपके लिस्टबॉक्स में कोई आइटम नहीं है और यही कारण है कि जब आप उस पर क्लिक करते हैं तो चयनित इंडेक्स चेंज को निकाल दिया नहीं जाता है।

संपादित करें: (के बाद से सवाल संपादित किया गया है, मैं अपने जवाब अपडेट करेगा)
फ़ाइलें के साथ अपने listboxes pouplate करने के लिए, आपको लगता है कि क्या करना चाहिए, कुछ SelectedIndexChanged के अलावा अन्य घटना में। क्योंकि आपके एप्लिकेशन की शुरुआत में आपकी सूची बॉक्स खाली हैं और चयनित इंडेक्स चेंज किए गए ईवेंट को निकाल दिया जाता है जब सूची बॉक्स में आइटम होते हैं और उपयोगकर्ता उस पर क्लिक करते हैं। आप अब निम्नलिखित समारोह

private void PopulateListBox(ListBox lsb, string Folder, string FileType) 
{ 
    DirectoryInfo dinfo = new DirectoryInfo(Folder); 
    FileInfo[] Files = dinfo.GetFiles(FileType); 
    foreach (FileInfo file in Files) 
    { 
     lsb.Items.Add(file.Name); 
    } 
} 

बना सकते हैं यदि आप एक बटन क्लिक करें या प्रपत्र लोड के खिलाफ किसी घटना में अपने लिस्टबॉक्स के साथ इस समारोह कह सकते हैं। जैसे

private void Form1_Load(object sender, EventArgs e) 
{ 
    PopulateListBox(listbox1, @"C:\TestLoadFiles", "*.rtld"); 
    PopulateListBox(listbox2, @"C:\TestLoadFiles", "*.other"); 
} 
+0

हां विस्तृत किया है, मैं एक बेवकूफ हूँ। इसलिए जब सूची सूची में आइटम होते हैं और उपयोगकर्ता उस पर क्लिक करते हैं तो यह सूची बॉक्स ईवेंट आग लग जाएगा। धन्यवाद, तो मैं फ़ोल्डर से सूची कैसे बना सकता हूं ?? – linguini

+0

@ कार्तिकरंगाराज, मेरा अद्यतन उत्तर देखें, आप विधि – Habib

+1

विधि का उपयोग कर सकते हैं हां, आप सिस्टम.आईओ का उपयोग कर गायब हैं, ' – Reniuz

1

यह काम कर सकते हैं;)

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DirectoryInfo dinfo = new DirectoryInfo(@"C:\TestLoadFiles"); 
    FileInfo[] Files = dinfo.GetFiles("*.rtdl"); 
    foreach (FileInfo file in Files) 
    { 
     listbox2.Items.Add(file.Name); 
    } 
} 
1

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

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

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