2012-05-09 27 views
6

Ben C# 'de bir yeni kullanıcı ve 2 Listboxes l -> istBox1 ve listBox2 var ve ben klasörden dosyaları bu liste kutularına yüklemek istiyorum. Böyle çalıştı i formu çalıştırdığınızda, klasöründen dosyaları görüntülüyor değil listBox1:C# pencere formları bir klasörden bir liste kutusundan dosyaları doldurun

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

Güzel. ve şimdi sorunuz nedir? – Reniuz

+0

sorun nedir? listbox1 için selectedindexchanged işleyicide, listbox1 – rt2800

+0

zaten bunu zaten yaptıysanız, aslında ... – Tigran

cevap

11

ListBox1_SelectedIndexChanged yerine, bazı düğme tıklamalarına karşı liste kutusunu güncelleyin, aksi takdirde kodunuz düzgün görünüyor. Başlangıçta, muhtemelen liste kutunuzda herhangi bir öğe yoktur ve bu nedenle, SelectedIndexChanged tıklatıldığında bu nedenle tetiklenmez.

Düzenleme: (soru düzenlendi beri, benim cevap güncellenir)
Dosyalar ile ListBoxes pouplate için, SelectedIndexChanged dışındaki bazı olay, o yapmalıdır. Uygulamanızın başlangıcında, liste kutularınız boş ve SelectedIndexChanged olayı liste kutusunda öğeler olduğunda ve kullanıcı tıklandığında tetiklenir. Şimdi aşağıdaki işlevi

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); 
    } 
} 

yaratabilir bir düğme tıklama veya form yüküne karşı bazı olay senin liste ile bu işlevi çağırabilir. Örneğin.

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

numaralı soruya dikkat ettim, aptalca. Bu yüzden bu liste kutusu olayı liste kutusundaki öğeler olduğunda ve kullanıcı tıklandığında yanacaktır. Teşekkürler, o zaman listeden klasörü nasıl doldurabilirim? – linguini

+0

@KarthikRANGARAJ, güncellenmiş yanıtıma bakın, – Habib

+1

yöntemini kullanabilirsiniz. Evet, Sistem.IO'yu kullanarak eksiksiniz; – Reniuz

1

Bu işe yarayabilecek;)

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

Yanlış olay herhalde. Bu kodu, formunuzun/kontrolün yapıcısına taşıyın veya başka bir kontrolün olayına iliştirin. SelectedIndexCihazında liste kutusunun yeniden oluşturulması Liste kutusunun ilk durumu boş olduğunda değiştirilmez.

İlgili konular