2012-05-09 53 views
6

Tôi là người mới trong C# và tôi có 2 Hộp danh sách l -> istBox1 và listBox2 và tôi muốn tải tệp từ thư mục vào các hộp danh sách này. tôi đã cố gắng như thế này: listBox1:Điền các tệp vào hộp danh sách từ thư mục trong các cửa sổ C#

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

khi tôi chạy theo hình thức, các tập tin từ thư mục không hiển thị ???

+0

Tốt. và bây giờ câu hỏi của bạn là gì? – Reniuz

+0

sự cố là gì? trong selectindexchanged xử lý cho listbox1, bạn lại một lần nữa populating listbox1 – rt2800

+0

bạn đã làm nó, thực sự ... – Tigran

Trả lời

11

Thay vì listBox1_SelectedIndexThay đổi, cập nhật hộp danh sách đối với một số lần nhấp vào nút, nếu không mã của bạn sẽ ổn. Ban đầu bạn có thể không có bất kỳ mục nào trong hộp danh sách của bạn và đó là lý do tại sao SelectedIndexChanged không bị sa thải khi bạn nhấp vào nó.

Chỉnh sửa: (Vì câu hỏi đã được chỉnh sửa, tôi sẽ cập nhật câu trả lời của mình)
Để pouplate hộp danh sách của bạn với Tệp, bạn nên làm điều đó, trong một số sự kiện khác với SelectedIndexChanged. Bởi vì khi bắt đầu ứng dụng của bạn, các hộp liệt kê của bạn trống và sự kiện SelectedIndexChanged được kích hoạt khi có các mục trong hộp danh sách và người dùng nhấp vào nó. Bạn có thể tạo chức năng sau đây

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

Bây giờ bạn có thể gọi chức năng này với hộp danh sách của bạn trong một số sự kiện chống lại nhấp chuột vào nút hoặc tải biểu mẫu. ví dụ.

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

vâng, tôi là người ngu ngốc. do đó sự kiện hộp danh sách này sẽ kích hoạt khi có các mục trong hộp danh sách và người dùng nhấp vào nó. Cảm ơn u, sau đó làm thế nào tôi có thể điền danh sách từ thư mục ?? – linguini

+0

@KarthikRANGARAJ, xem câu trả lời cập nhật của tôi, bạn có thể sử dụng phương thức – Habib

+1

Có bạn thiếu 'using System.IO;' – Reniuz

1

này có thể làm việc;)

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

sự kiện sai tôi giả sử. Di chuyển mã đó đến hàm tạo của biểu mẫu/điều khiển của bạn hoặc đính kèm nó vào một sự kiện của một điều khiển khác. Repopulating listBox trên SelectedIndexChanged khi trạng thái ban đầu của listbox trống rỗng không có ý nghĩa.

Các vấn đề liên quan