Principales respuestas
Que evento usar para un listview

Pregunta
-
Tengo un formulario con dos listview, el primero tiene una lista de items que al ser seleccionado despliega otra lista de items en el segundo listview.
Con el mouse funciona todo bien, pero me gustaria que si el usuario tecleará el nombre de un item, en el primer listview se cargaran los datos del segundo listview..
ejemplo
items:
1234
5678
789
7895
1235
cuando escriba 1235 sobre el listview se posicionara el item y se cargaran los datos en el segundo listview.. lo estoy consiguiendo usando el metodo KeyDown pero me di cuenta que se gatilla(ejecuta) varias veces al escribir 1235 sobre el listview....
existe alguna forma de hacer esto?- Editado AplicationNet lunes, 22 de junio de 2009 20:44
lunes, 22 de junio de 2009 19:46
Respuestas
-
hola,
sabes que se me ocurre, podrias hacer uso de los eventos:
AfterLabelEdit
BeforeLabelEdit
para quitar o asignar el handler del evento keydown.
sabes que puedes agregar o quitarlo usando el += o -=, sino avisa y te comento como hacerlo.
de esta forma cuando editar no te molestara ese evento.
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Juan Carlos Ruiz [perfil anterior]Moderator viernes, 3 de julio de 2009 21:30
- Marcado como respuesta Juan Carlos Ruiz [perfil anterior]Moderator viernes, 10 de julio de 2009 17:39
martes, 23 de junio de 2009 13:43
Todas las respuestas
-
hola,
podrias hacer que en el evento KeyDown detecte la pulsacion de un enter, y alli lanzar la seleccion del valor ingresado por el usuario.
se me ocurre de esta forma evitarias que se ejecute la busqueda con ingresos parciales.
private void textbox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// aqui realizas la busqueda en tu listview del valor de la textbox
e.Handled = true;
}
}
Nota: no recuerdo si el handled, deberia ser true o false en este caso, la idea es parar la entrada del enter, asi no pierdes el foco del control.
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentinalunes, 22 de junio de 2009 20:29 -
hola,
podrias hacer que en el evento KeyDown detecte la pulsacion de un enter, y alli lanzar la seleccion del valor ingresado por el usuario.
se me ocurre de esta forma evitarias que se ejecute la busqueda con ingresos parciales.
private void textbox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// aqui realizas la busqueda en tu listview del valor de la textbox
e.Handled = true;
}
}
Nota: no recuerdo si el handled, deberia ser true o false en este caso, la idea es parar la entrada del enter, asi no pierdes el foco del control.
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina
Hola, tu ejemplo es basado en un textbox pero es aplicable a un listview tambien asi que gracias..
Pero mi idea es no utilizar ninguna tecla axuliar para hacer esto(Enter,alt), sera que no existe otra formalunes, 22 de junio de 2009 20:46 -
si el tema es determinar de alguna forma cuando lanzar la busqueda en el listview para ejecutar la seleccion, si quieres evitar que se ejecute con cada tecla presionada debes seleccionar una por defecto para realziar la accion, yo te sugeria el enter pero puede ser cualquier otra.
Otro posibilidad es colocarle un boton de busqueda al lado del textbox o del contro, que estes usando.
O sea es tipico boton con la lupa que tiene tantas aplicaciones.
El usuario carga lo que quiere buscar y luego presiona en ese boton para ejecutarla.
Se me ocurren solo estas opciones por ahora.
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentinalunes, 22 de junio de 2009 23:02 -
si el tema es determinar de alguna forma cuando lanzar la busqueda en el listview para ejecutar la seleccion, si quieres evitar que se ejecute con cada tecla presionada debes seleccionar una por defecto para realziar la accion, yo te sugeria el enter pero puede ser cualquier otra.
Otro posibilidad es colocarle un boton de busqueda al lado del textbox o del contro, que estes usando.
O sea es tipico boton con la lupa que tiene tantas aplicaciones.
El usuario carga lo que quiere buscar y luego presiona en ese boton para ejecutarla.
Se me ocurren solo estas opciones por ahora.
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina
Leandro, agradesco tu ayuda, pero creo que aun no me estas entiendo mi ejemplo, tengo 2 listview, que estan anidados. Es decir al pinchar un item del primer listview se hace una consulta sql y se carga el segundo listview, dependiendo de lo que se haya seleccionado en el primero.
-------------
Listview 1
------------
item1
item2
item3(selecciono)
-------------
----------------
Listview 2
-----------------
item2 de item3
item3 de item3
item4 de item3
-----------------
Listview 1_keyDown()
{
//ejecuto consulta sql que carga el listview2
}
El problema que ocurre, es que cuando estoy sobre el item1 del listview 1 y escribo(en el mismo listview) item3 este se pasa por el item2 y luego el item3, porque lo que se generan dos consultas sql.
Aplique la logica del enter, es decir cuando este en el item1 y escriba item3, solo se posiciona pero no hago la consulta haste que le de entermartes, 23 de junio de 2009 12:35 -
hola,
una pregunta porque haces uso del evento keydown en el listview, porque no utilzias el evento click ?
digo para seleccionar lo comun es usar el click.
Listview 1_Click()
{
//ejecuto consulta sql que carga el listview2
}
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentinamartes, 23 de junio de 2009 12:46 -
hola,
es porque aparte de hacer click quiero que el usuario pueda escribir el item que desea y se posicion en el...para luego ejecutar la consulta.
una pregunta porque haces uso del evento keydown en el listview, porque no utilzias el evento click ?
digo para seleccionar lo comun es usar el click.
Listview 1_Click()
{
//ejecuto consulta sql que carga el listview2
}
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentinamartes, 23 de junio de 2009 13:06 -
hola,
sabes que se me ocurre, podrias hacer uso de los eventos:
AfterLabelEdit
BeforeLabelEdit
para quitar o asignar el handler del evento keydown.
sabes que puedes agregar o quitarlo usando el += o -=, sino avisa y te comento como hacerlo.
de esta forma cuando editar no te molestara ese evento.
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Juan Carlos Ruiz [perfil anterior]Moderator viernes, 3 de julio de 2009 21:30
- Marcado como respuesta Juan Carlos Ruiz [perfil anterior]Moderator viernes, 10 de julio de 2009 17:39
martes, 23 de junio de 2009 13:43