2012-05-09 8 views
6

Soy un novato en C# y tengo 2 Listboxes l -> istBox1 y listBox2 y quiero cargar archivos de la carpeta en estos listboxes. Traté de esta manera: listBox1:Rellene archivos en un cuadro de lista desde una carpeta en formularios de Windows 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); 
      } 
     } 

cuando funciono la forma, los archivos de la carpeta no muestra ???

+0

Agradable. y ahora ¿cuál es tu pregunta? – Reniuz

+0

¿cuál es el problema? en selectedindexchanged handler para listbox1, de nuevo está poblando listbox1 – rt2800

+0

que ya lo hizo, en realidad ... – Tigran

Respuesta

11

En lugar de listBox1_SelectedIndexChanged, actualice el cuadro de lista con un clic, de lo contrario su código se verá bien. Inicialmente, es probable que no tenga ningún elemento en su cuadro de lista y es por eso que SelectedIndexChanged no se dispara cuando hace clic en él.

Editar: (Dado que la pregunta ha sido editada, actualizaré mi respuesta)
Para reemplazar sus listboxes con Archivos, debe hacerlo, en algún caso que no sea SelectedIndexChanged. Porque al inicio de su aplicación sus listboxes están vacíos y el evento SelectedIndexChanged se activa cuando hay elementos en el cuadro de lista y el usuario hace clic en él. Usted puede crear la siguiente función

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

Ahora puede llamar a esta función con el cuadro de lista en algún evento contra un clic de botón o de carga del formulario. p.ej.

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

sí, soy un estúpido. por lo que este evento de listbox se activará cuando haya elementos en el cuadro de lista y el usuario haga clic en él. Gracias, ¿cómo puedo llenar la lista de la carpeta? – linguini

+0

@KarthikRANGARAJ, mira mi respuesta actualizada, puedes usar el método – Habib

+1

Sí, me falta 'using System.IO;' – Reniuz

1

Esto podría funcionar;)

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

evento incorrecto, supongo. Mueva ese código al constructor de su formulario/control o adjúntelo a un evento de otro control. Volver a llenar el listBox en SelectedIndexChanged cuando el estado inicial del listbox está vacío no tiene sentido.

Cuestiones relacionadas