locked
Que evento usar para un listview RRS feed

  • 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?

    lunes, 22 de junio de 2009 19:46

Respuestas

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
    Argentina
    lunes, 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 forma
    lunes, 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
    Argentina
    lunes, 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 enter
    martes, 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
    Argentina
    martes, 23 de junio de 2009 12:46
  • 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
    Argentina
    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.
    martes, 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
    martes, 23 de junio de 2009 13:43