elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Listview + OnKeyPress event
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Listview + OnKeyPress event  (Leído 3,519 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Listview + OnKeyPress event
« en: 6 Enero 2013, 02:18 am »

Lo siento pero no se como se le llama a lo que pretendo hacer, así que le llamaré "easy-find" xD,

Esta listview tiene 4 columnas, y me gustaría que la listview se comportase de la siguiente manera con la columna nº 2 ("Archivo"):

- Al pulsar una tecla del teclado (una tecla del alfabeto), visualizar/seleccionar la primera línea que empiece por esa letra.

- (MENOS IMPORTANTE) > Si la columna está desordenada, la misma lógica pero seleccionar la línea más cercana empezando a buscar desde la linea seleccionada, HACIA ABAJO.

Imagino que costará un poco de trabajo así que no lo pido todo hecho, pero ayúdenme a empezar, lo del evento "OnKeyPress" es fácil de hacer, pero no sé como podría hacer el "easy-find"...


Para el primer problema he pensado en recorrer con un FOR todo el array de "ListView.Items()" para buscar el subitem que empiece por la letra presionada, pero de todas formas he preferido hacer este post por si saben de alguna manera más sencilla y/o rápida.



« Última modificación: 18 Enero 2013, 11:19 am por EleKtro H@cker » En línea



seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Listview + OnKeyPress event
« Respuesta #1 en: 6 Enero 2013, 02:57 am »

el mismo listview ya tiene metodos de busqueda, si lo buscas en internet en 3 segundos lo encontras  :silbar:, por ejemplo algo simple con FindItemWithText

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.        Dim lvItem As ListViewItem = ListView1.FindItemWithText("G", False, 0, True)
  5.  
  6.        If (lvItem IsNot Nothing) Then
  7.            ListView1.Items(lvItem.Index).Selected = True
  8.            ListView1.Select()
  9.        End If
  10.    End Sub
  11.  
  12.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  13.  
  14.        ListView1.Columns.Add("Columna 1")
  15.        ListView1.View = View.Details
  16.        ListView1.FullRowSelect = True
  17.  
  18.        For i As Int16 = Convert.ToInt16("A"c) To Convert.ToInt16("Z"c)
  19.            Dim letter As Char = Convert.ToChar(i)
  20.            ListView1.Items.Add(letter)
  21.        Next
  22.    End Sub
  23. End Class

carga todas las letras del abecedario en una columna y despues con el boton busca la letra "G" y la selecciona.

despues tenes otras como FindNearestItem, para seguir buscando a partin de una posicion determinada, hay varias formas.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Listview + OnKeyPress event
« Respuesta #2 en: 6 Enero 2013, 03:33 am »

uf, muchas gracias Seba,
me quitas un peso de encima con ese method, estaba cagado de miedo por si la única alternativa era usar el ObjectListView (Alguna de sus propiedades que hiciera eso automáticamente), no sé si será muy lógico lo que acabo de decir... porque siempre se puede codear lo necesario o en este caso ya hay un method que nos ayuda a hacerlo, pero ... :xD

PD: Deseando ver un día de estos un tutorial de como crear el modelo de objeto para agregar un item en el ObjectListView  :silbar:  ;D

Saludos
« Última modificación: 6 Enero 2013, 03:38 am por EleKtro H@cker » En línea



seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Listview + OnKeyPress event
« Respuesta #3 en: 6 Enero 2013, 03:44 am »

PD: Deseando ver un día de estos un tutorial de como crear el modelo de objeto para agregar un item en el ObjectListView  :silbar:  ;D

si, lo estoy haciendo  :xD, no solo eso, sino como hacer varias cosas mas, entre ellas la busqueda del objectlistview que es super potente.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Listview + OnKeyPress event
« Respuesta #4 en: 6 Enero 2013, 03:56 am »

si, lo estoy haciendo  :xD

A ver si no recuerdo mal spiritdead dijo que el objeto se debe crear en una class, de ser así imagino que esa manera será para agregar objetos/items predefinidos al listview,
¿Pero que pasa entonces si yo necesito añadir los items sin conocer cuales son los items? es decir, por ejemplo parsear un texto delimitado e ir agregando los items uno por uno:

Línea de un texto cualquiera:
Código:
Simple Plan - I Can Wait Forever;4m:54s;128 Kbps;4,49 MB

Ejemplo de como se añadiría en un listview convencional:
Código
  1. ' llamo al sub que hace un SPLIT en cada línea del texto...
  2.  
  3. ' Seteo los strings...
  4. Listview_Row_STR(1) = TextDelimited(0)
  5. Listview_Row_STR(2) = TextDelimited(1)
  6. Listview_Row_STR(3) = TextDelimited(2)
  7.  
  8. ' Y añado el item
  9. Listview_Item = New ListViewItem(Listview_Row_STR)
  10. GListView.Items.Add(Listview_Item)

¿En el tutorial explicarás como hacer algo así? me refiero a añadir los items "en tiempo real", sin haberlos predefinido en una class.

Bueno, ya me esperaré a que salga el tuto para hacer allí las preguntas xD.

Saludos.
En línea



spiritdead

Desconectado Desconectado

Mensajes: 296


Ver Perfil
Re: Listview + OnKeyPress event
« Respuesta #5 en: 6 Enero 2013, 04:23 am »

A ver si no recuerdo mal spiritdead dijo que el objeto se debe crear en una class, de ser así imagino que esa manera será para agregar objetos/items predefinidos al listview,
¿Pero que pasa entonces si yo necesito añadir los items sin conocer cuales son los items? es decir, por ejemplo parsear un texto delimitado e ir agregando los items uno por uno:

Línea de un texto cualquiera:
Código:
Simple Plan - I Can Wait Forever;4m:54s;128 Kbps;4,49 MB

Ejemplo de como se añadiría en un listview convencional:
Código
  1. ' llamo al sub que hace un SPLIT en cada línea del texto...
  2.  
  3. ' Seteo los strings...
  4. Listview_Row_STR(1) = TextDelimited(0)
  5. Listview_Row_STR(2) = TextDelimited(1)
  6. Listview_Row_STR(3) = TextDelimited(2)
  7.  
  8. ' Y añado el item
  9. Listview_Item = New ListViewItem(Listview_Row_STR)
  10. GListView.Items.Add(Listview_Item)

¿En el tutorial explicarás como hacer algo así? me refiero a añadir los items "en tiempo real", sin haberlos predefinido en una class.

Bueno, ya me esperaré a que salga el tuto para hacer allí las preguntas xD.

Saludos.

si usaras objectlistview, debes tener en cuanta varios aspectos

puedes usar structures o clases
En línea

Facilitador De Tareas - Task Simplifier (FDT)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
listview
Programación Visual Basic
visualfree 3 2,421 Último mensaje 10 Octubre 2006, 19:50 pm
por CeLaYa
ListView
.NET (C#, VB.NET, ASP)
RCB 0 2,506 Último mensaje 15 Abril 2010, 02:24 am
por RCB
OPEN EVENT
Software
Anmoar 1 3,566 Último mensaje 2 Mayo 2011, 02:32 am
por Novlucker
Fullcalendar con popover Bootstrap al crear event
Desarrollo Web
1304654 0 2,000 Último mensaje 17 Agosto 2015, 16:12 pm
por 1304654
¿Como coger el PID de un proceso hijo que ha hecho Event.set()? | Python3 multiprocessing Event
Scripting
Drakaris 2 4,647 Último mensaje 6 Diciembre 2021, 20:10 pm
por Danielㅤ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines