Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Codename!! en 22 Marzo 2010, 23:30 pm



Título: ListView Y SUBITEMS ( C# )
Publicado por: Codename!! en 22 Marzo 2010, 23:30 pm
Buenas, tengo una duda, se que para añadir items a un listview se hace asi :

Código:
ListViewItem item1 = new ListViewItem("item1",0);
            // Place a check mark next to the item.
            item1.Checked = true;
            item1.SubItems.Add("1");
            item1.SubItems.Add("2");
            item1.SubItems.Add("3");

peeeeeeeeero....

si ya tienes el item añadido de antes y simplemente quieres añadirle ahora un subitem???
tengo que borrarlo y hacerlo de esa manera??? supongo que habra alguna manera no ?


Título: Re: ListView Y SUBITEMS ( C# )
Publicado por: raul338 en 22 Marzo 2010, 23:47 pm
Código
  1. ListViewItem item = listview.Items.Find("TextoDelItem");
  2. item.SubItems.Add("xD");
  3.  

Segun mis recuerdos eso no me funciono JAJA XD, ahora te doy otro ejemplo que si me funciono (pero era de menor rendimiento)


Edit: Codigo extraido del intento de pasar un codigo de vb6 a .net, pero lo deje por vagancia y otros temas :P

Código
  1. For Each i As ListViewItem In lstVentanas.Items
  2.                            ' NOTA: Aca no se porque, pero no me funciono ni el Find, FindKey, Contains de ListView
  3.                            '       para saber si ya estaba puesto el item :(
  4.                            '       Por lo tanto tuve que hacer esta "robusta" comparacion
  5.  
  6.                            tempHandle = CType(i.Tag, IntPtr)
  7.  
  8.                            '' Primero nos fijamos si la ventana sigue existiendo, si no, la eliminamos
  9.                            If IsWindow(tempHandle) Then
  10.                                '' Esta en la lista, por lo tanto lo actualizamos
  11.                                If hwnd = tempHandle Then
  12.                                    insert = False
  13.                                    If titulo <> i.Text Then i.Text = titulo
  14.                                    If i.SubItems(1).Text <> IsWindowVisible(hwnd).ToString() Then i.SubItems(1).Text = IsWindowVisible(hwnd).ToString()
  15.                                End If
  16.                            Else
  17.                                '' No existe mas ese handle, la borramos de la lista
  18.                                lstVentanas.Items.Remove(i)
  19.                            End If
  20.                        Next
  21.  

Lo que hacia el code era verificar si el item existia, por lo cual ninguna de las funciones que traia el listview me funciono, y lo tuve que buscar a mano. Si existia lo actualizaba, y si no existia mas la ventana la eliminaba

El proyecto era un ocultador de ventanas "para privacidad" :rolleyes: que salio en vb6, cuando lo quise pasar a .net para ampliarlo lo deje en el camino jeje


Título: Re: ListView Y SUBITEMS ( C# )
Publicado por: Codename!! en 23 Marzo 2010, 16:44 pm
Hola otra vez!

mira lo que he encontrado y funciona!

Código:
ListViewItem itemEncontrado = listView1.FindItemWithText(a,true,0);

Lo del true,0 eso se puede omitir pero bueno.


pero lo que sigo sin poder hacer es si tengo 3 columnas, y quiero meter datos en la columna 3 sin meter nada en la columna dos no puedo!!

he probgado esto:
Código:
itemEncontrado.SubItems[INDEX DE MI COLUMNA].Text=("hola caracola");

pero me salta un error como que me he salido del array...solo me deja poner el 0 y entonces sobrecribe lo que hay en la 1º columna...



solo me funciona poniendo a mano esto:
Código:
ListViewItem itemEncontrado = listView1.FindItemWithText(a,true,0);
            itemEncontrado.SubItems.Add("");
            itemEncontrado.SubItems.Add("Hola Caracola,estoy en la 3º columna");
Pero esto ultimo es un poco timo....


argg! a alguien se le ocurre como??


Título: Re: ListView Y SUBITEMS ( C# )
Publicado por: [D4N93R] en 23 Marzo 2010, 17:12 pm
La mejor manera, que he encontrado yo, para identificar items de un ListView es al momento de crear el item le añades el objeto de referencia en la propiedad TAG.. en caso de que estes usando objetos...

Sino es mejor con el Name, o algo, pero NO con el Text ya que en caso de que varíe pierde la identidad..


Un saludo!


Título: Re: ListView Y SUBITEMS ( C# )
Publicado por: raul338 en 23 Marzo 2010, 21:58 pm
@D4N93R: Si ves mi codigo, veras que hago eso :P

@Codename: Es ovbio, si el item no tiene subcolumnas no podes modificarlas. Pero el metodo Add creo que tiene una sobrecarga que puedes especificar el id o nombre de la columna a la que quieras agregar