Desplegar un archivo en forma de tabla con c# en windows aplicattion

Iniciado por nico56, 2 Enero 2010, 19:13 PM

0 Miembros y 1 Visitante están viendo este tema.

nico56

Hola que tal, tengo un archivo con la siguiente forma


nombre1;telefono1;
nombre2;telefono2;



Como veran uso el ";" como delimitador en el string.

Tengo una función que va leyendo el archivo y guardando en dos variables distintas el nombre y el telefono:



public void miFuncion()
{         
            string[] campos;
            char[] x={';'} //delimitador

            FileStream fs = new FileStream("C:\\Archivo.txt", FileMode.Open);
            StreamReader sr = new StreamReader(fs);

            while (!sr.EndOfStream)
            {
                string linea = sr.ReadLine();
                campos=linea.split(x);
               
            }

            sr.Close();
            fs.Close();
}


Entonces en el codigo anterior me queda en "campos[0]" el nombre, y en "campos[1]" el telefono, que herramienta puedo usar para ir mostrandolo en forma de lista con tabulaciones. Probe de usar un texBox pero me queda muy desalineado las columnas :S .

Desde ya gracias y saludos.

Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

nico56

El listbox tiene una propiedad que se llama "multicolumn" la pongo en true, pero donde pongo la cantidad de columnas. ?

seba123neo

yo lo haria en un listview, podes poner las cabeceras y personalizarlo como quieras, por si acaso alguna vez, en vez de 2 campos tenes 10, te va a quedar mejor con un listview.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

nico56

Cita de: seba123neo en  2 Enero 2010, 22:40 PM
yo lo haria en un listview, podes poner las cabeceras y personalizarlo como quieras, por si acaso alguna vez, en vez de 2 campos tenes 10, te va a quedar mejor con un listview.

saludos.

Hola, si en realidad es para una tabla de 10 columnas, pero para no complicar aca las cosas en el foro lo pregunte para 2, total si me sale con 2 me sale con 10. Podrias explicarme como lo harias con un listView porque no le encuentro la vuelta. Gracias.

Shell Root

Cita de: nico56 en  2 Enero 2010, 22:33 PMEl listbox tiene una propiedad que se llama "multicolumn" la pongo en true, pero donde pongo la cantidad de columnas. ?
Código (vbnet) [Seleccionar]
ListBox1.Items.AddRange(New Object() {"Nombre, Telefono"})
Pero sale muy desorganizado.



Cita de: nico56 en  3 Enero 2010, 00:00 AMPodrias explicarme como lo harias con un listView porque no le encuentro la vuelta. Gracias.

Lo del ListView, el code es de seba123neo
Código (vbnet) [Seleccionar]
       Dim oReg As New ListViewItem("Item columna1")

       With ListView1
           .View = View.Details
           .Columns.Add("Archivos ", 300)
           .Columns.Add("Modificación", 120)
       End With
       With oReg
           .SubItems.Add("Item Columna 2")
           ListView1.Items.Add(oReg)
       End With


Saludines!
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

nico56

Hola shell root, gracias , no me quiero abusar pero podrias ponerlo en c#  :-[

seba123neo

es casi lo mismo, sacale el With ya que no existe esta instrucción en C#, y lo demas igual.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Shell Root

Cita de: nico56 en  3 Enero 2010, 03:08 AM
Hola shell root, gracias , no me quiero abusar pero podrias ponerlo en c#  :-[

Código (c#) [Seleccionar]
        ListViewItem oReg = new ListViewItem("Item columna1");
   
        ListView1.View = View.Details;
        ListView1.Columns.Add("Archivos ", 300);
        ListView1.Columns.Add("Modificación", 120);

        oReg.SubItems.Add("Item Columna 2");
        ListView1.Items.Add(oReg);
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

nico56

Gracias de vuelta, funciona perfecto cuando leo el primer registro del archivo, pero cuando le pongo un ciclo while para que lo haga con todo el archivo me dice que la variable "campos[1]" se paso del indice, que puede ser ?


private void button1_Click(object sender, EventArgs e)
        {
            string[] campos;
            char[] x ={ ';' };//delimitador

            FileStream fs = new FileStream("cheques.txt", FileMode.Open);
            StreamReader sr = new StreamReader(fs);

            listView1.Columns.Add("FECHA ", 75);
            listView1.Columns.Add("CLIENTE", 100);
            listView1.Columns.Add("NUMERO", 75);
            listView1.Columns.Add("BANCO", 100);
            listView1.Columns.Add("VENCIMIENTO", 75);
            listView1.Columns.Add("IMPORTE", 75);
            listView1.Columns.Add("TENEDOR", 100);

            while (sr.EndOfStream != true)
            {
                campos = sr.ReadLine().Split(x);
               
                ListViewItem oReg = new ListViewItem(campos[0]);
               
                listView1.View = View.Details;
               
                oReg.SubItems.Add(campos[1]);//cliente (ahi me tira el error)
                oReg.SubItems.Add(campos[2]);//numero
                oReg.SubItems.Add(campos[3]);//banco
                oReg.SubItems.Add(campos[4]);//vencimiento
                oReg.SubItems.Add(campos[5]);//importe
                oReg.SubItems.Add(campos[6]);//tenedor
               
                listView1.Items.Add(oReg);
            }

           
        }