Listar procesos en listview.

Iniciado por nolasco281, 20 Junio 2015, 06:03 AM

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

nolasco281

Hola como estan tengo la siquiente consulta quiero listar varias propiedade de la clase process
estoy usando controles telerik.

El problema que tengo es que no me lista el id ni el nombre del proceso por columnas pero sin columnas si me los lista.

aca dejo el codigo.

Código (vbnet) [Seleccionar]

Dim procesos As New Process
       Dim lvlItem As New ListViewDataItem()
       'Dim Contador As Integer = 0

'No me muestra los datos correctamente
       For Each procesos In Process.GetProcesses()
           Me.ListaProcesos.Items.Add(lvlItem)
           lvlItem.Item(0) = procesos.Id  'ha la columna 1 le asigno el id de los procesos
           lvlItem.Item(1) = procesos.ProcessName 'ha la columna 2 le asigno el nombre
       Next

       For Each procesos In Process.GetProcesses()
           RadListView1.Items.Add(procesos.Id)
       Next

       For Each procesos In Process.GetProcesses()
           RadListView2.Items.Add(procesos.ProcessName)
       Next


El problema es que no me los lista en las columnas aca un ejemplo.



Saludos.
Lo que se puede imaginar... se puede programar.

Eleкtro

#1
Cita de: nolasco281 en 20 Junio 2015, 06:03 AM
Código (vbnet,1,5,6) [Seleccionar]
Dim lvlItem As New ListViewDataItem()

For Each procesos In Process.GetProcesses()
   Me.ListaProcesos.Items.Add(lvlItem)
   lvlItem.Item(0) = procesos.Id  'ha la columna 1 le asigno el id de los procesos
   lvlItem.Item(1) = procesos.ProcessName 'ha la columna 2 le asigno el nombre
Next

Estás manipulando siempre la misma referencia, es decir, estás reemplazando los valores en el mismo objeto todo el rato.

Instancia un objeto del tipo ListViewDataItem para cada item y resolverás el problema.

O añade directamente los valores "id" y "Processname" a la colección RadListView1.Items, usando el overload de los métodos Add o AddRange que toman cómo argumento un Array de objetos.

Saludos!








nolasco281

Hola gracias por responder sos un genio  ;-).

Esta es la segunda solucion que me das andubo perfecto
Código (vbnet) [Seleccionar]

For Each procesos In Process.GetProcesses()
      Me.ListaProcesos.Items.Add(procesos.Id, procesos.ProcessName)
Next


Aunque la primera no termino de entender muy bien

CitarInstancia un objeto del tipo ListViewDataItem para cada item

Código (vbnet) [Seleccionar]

Dim lvlItem As New ListViewDataItem()
Dim lvlItem1 As New ListViewDataItem()

For Each procesos In Process.GetProcesses()
   Me.ListaProcesos.Items.Add(lvlItem)  
   Me.ListaProcesos.Items.Add(lvlItem1)            
   lvlItem.Item(0) = procesos.Id            
   lvlItem1.Item(1) = procesos.ProcessName
Next


Se que esta malisimo eso que escribi arriba pero no termino de entender la idea.

Gracias por la ayuda.

Saludos
Lo que se puede imaginar... se puede programar.

Eleкtro

#3
Cita de: nolasco281 en 20 Junio 2015, 08:48 AMla primera no termino de entender muy bien

Ejemplo:
Código (vbnet) [Seleccionar]
Dim lvItems As New List(Of ListViewDataItem)

For Each p As Process In Process.GetProcesses()

   Using lvItem As New ListViewDataItem

       With lvItem
           .Item(0) = p.Id
           .Item(1) = p.ProcessName
       End With

       lvItems.Add(lvItem)

   End Using

Next p

With Me.RadListView1
   .Columns.Add("PID")
   .Columns.Add("Process Name")
   .ViewType = ListViewType.DetailsView

   .Items.AddRange(lvItems.ToArray)
End With


Saludos!








nolasco281

Ya en tiendo a que te referias con
Citarpara cada item
:-(

Me disculpo por las molestias muchas gracias por tu tiempo Eleкtro.



Gracias de nuevo y saludos.
Lo que se puede imaginar... se puede programar.