ListBox: seleccion al mover el mouse sobre elementos

05/07/2006 - 00:51 por AT Baez | Informe spam
Saludos al grupo,
Por favor alguien me puede decir como:
Seleccionar un item en un ListBox cuando el raton se situa encima del item,
y que se mueva la seleccion con el movimiento del raton (al estilo de los
menus). Apreciaria un poco de ayuda porque estoy cansado de intentar algo
que no deberia ser complicado.
Gracias de antemano,
Alberto
 

Leer las respuestas

#1 Guillermo guille
06/07/2006 - 02:31 | Informe spam
En teoría es fácil, en el evento MouseMove, detecta en que posición (Y) está
el puntero del ratón, le restas el "top" del listbox y ese valor lo divides
por el alto de cada elemento (ItemHeight).
Si el listbox tiene más elementos de los que se ven, debes tener en cuenta
el TopIndex, una vez que sabes el elemento en el que está el cursor del
ratón, simplemente lo seleccionas (procura que el ListBox no sea
MultiSelect) y tendrás el efecto que quieres.

¿Quieres código?

En VB sería algo así:

Dim ih As Integer = ListBox1.ItemHeight
Dim t As Integer = ListBox1.Top

Dim p As Integer = e.Y - t
Dim it As Integer = p \ ih + ListBox1.TopIndex
If it > ListBox1.Items.Count - 1 Then it = ListBox1.Items.Count - 1
ListBox1.SelectedIndex = it


Pero es fácil de convertir a C#:

int ih = ListBox1.ItemHeight;
int t = ListBox1.Top;

int p = e.Y - t;
int it = p / ih + ListBox1.TopIndex;
if( it > ListBox1.Items.Count - 1 ) it = ListBox1.Items.Count - 1;
ListBox1.SelectedIndex = it;


Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Mentor Asociado de Solid Quality Learning Iberoamericana

Te invito a mi sitio: http://www.elguille.info/
Resuelve tus dudas en: http://foros.elguille.info/

"AT Baez" escribió en el mensaje
news:ThCqg.86445$
Saludos al grupo,
Por favor alguien me puede decir como:
Seleccionar un item en un ListBox cuando el raton se situa encima del
item, y que se mueva la seleccion con el movimiento del raton (al estilo
de los menus). Apreciaria un poco de ayuda porque estoy cansado de
intentar algo que no deberia ser complicado.
Gracias de antemano,
Alberto

Preguntas similares