Autor
|
Tema: Listview + OnKeyPress event (Leído 3,531 veces)
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
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
|
el mismo listview ya tiene metodos de busqueda, si lo buscas en internet en 3 segundos lo encontras , por ejemplo algo simple con FindItemWithTextPublic Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim lvItem As ListViewItem = ListView1.FindItemWithText("G", False, 0, True) If (lvItem IsNot Nothing) Then ListView1.Items(lvItem.Index).Selected = True ListView1.Select() End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ListView1.Columns.Add("Columna 1") ListView1.View = View.Details ListView1.FullRowSelect = True For i As Int16 = Convert.ToInt16("A"c) To Convert.ToInt16("Z"c) Dim letter As Char = Convert.ToChar(i) ListView1.Items.Add(letter) Next End Sub 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
Mensajes: 9.878
|
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 ... PD: Deseando ver un día de estos un tutorial de como crear el modelo de objeto para agregar un item en el ObjectListView Saludos
|
|
« Última modificación: 6 Enero 2013, 03:38 am por EleKtro H@cker »
|
En línea
|
|
|
|
seba123neo
|
PD: Deseando ver un día de estos un tutorial de como crear el modelo de objeto para agregar un item en el ObjectListView si, lo estoy haciendo , 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
Mensajes: 9.878
|
si, lo estoy haciendo 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: Simple Plan - I Can Wait Forever;4m:54s;128 Kbps;4,49 MB Ejemplo de como se añadiría en un listview convencional: ' llamo al sub que hace un SPLIT en cada línea del texto... ' Seteo los strings... Listview_Row_STR(1) = TextDelimited(0) Listview_Row_STR(2) = TextDelimited(1) Listview_Row_STR(3) = TextDelimited(2) ' Y añado el item Listview_Item = New ListViewItem(Listview_Row_STR) 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
Mensajes: 296
|
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: Simple Plan - I Can Wait Forever;4m:54s;128 Kbps;4,49 MB Ejemplo de como se añadiría en un listview convencional: ' llamo al sub que hace un SPLIT en cada línea del texto... ' Seteo los strings... Listview_Row_STR(1) = TextDelimited(0) Listview_Row_STR(2) = TextDelimited(1) Listview_Row_STR(3) = TextDelimited(2) ' Y añado el item Listview_Item = New ListViewItem(Listview_Row_STR) 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
listview
Programación Visual Basic
|
visualfree
|
3
|
2,431
|
10 Octubre 2006, 19:50 pm
por CeLaYa
|
|
|
ListView
.NET (C#, VB.NET, ASP)
|
RCB
|
0
|
2,518
|
15 Abril 2010, 02:24 am
por RCB
|
|
|
OPEN EVENT
Software
|
Anmoar
|
1
|
3,572
|
2 Mayo 2011, 02:32 am
por Novlucker
|
|
|
Fullcalendar con popover Bootstrap al crear event
Desarrollo Web
|
1304654
|
0
|
2,006
|
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,679
|
6 Diciembre 2021, 20:10 pm
por Danielㅤ
|
|