none
C# Simular pulsación de teclas en un DataGridView No me funciona (Win Mobile 5.0) RRS feed

  • Pregunta

  • Que tal, pues como lo dice el titulo de la pregunta, tengo un pequeño problema con mi aplicación, primeramente, el dispositivo para el que la estoy desarrollando no tiene las teclas de  las flechas ARRIBA y ABAJO, solo tiene a la IZQUIERDA y a la DERECHA, y yo necesito ARRIBA y ABAJO para recorrer el Grid renglón por renglón. Lo que intenté en un principio fue simular la pulsación de la flecha ARRIBA y ABAJO en el evento KeyPress de las teclas IZQUIERDA y DERECHA, si subía y bajaba, pero aun así me seguía ejecutando el evento de las flechas IZQUIERDA y DERECHA, por lo que recorría el grid "en escalera". Decidí cambiar el diseño y aprovechando que el dispositivo es Touch, agregué dos botones, uno para simular la pulsación hacia ARRIBA y otro hacia ABAJO, funciona bien a la hora de recorrer el grid, pero a la hora de querer extraer los datos de la celda seleccionada, me toma el valor de la celda siguiente en el caso de presionar hacia ABAJO, y el valor de la celda anterior en caso de ir hacia ARRIBA, nunca me da el valor de la celda actual, no se que estoy haciendo mal, incluso al cargar la forma el grid comienza en Renglón 0, Columna 0, Presiono hacia abajo y se queda en Renglón 0, Columna 0, debiendo ser Renglón 1, Columna 0, presiono nuevamente y es entonces cuando comienza a cambiar, pero mostrando los datos como lo explique anteriormente. Espero haberme dado a entender y espero puedan ayudarme, este es el código que utilice, lo encontré en un foro de aquí mismo. Desde ya muchas gracias...

    using System.Runtime.InteropServices;

    const int KEYEVENTF_KEYDOWN = 0x0;
    const int VK_DOWN = 0x28;
    const int VK_UP = 0x26;

    [DllImport("coredll.dll", SetLastError = true)]
    static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

    private void img_Subir_MouseDown(object sender, MouseEventArgs e)
    {
           keybd_event(VK_UP, 0, KEYEVENTF_KEYDOWN, 0);            
    }
    private void img_Bajar_MouseDown(object sender, MouseEventArgs e)
    {
          keybd_event(VK_DOWN, 0, KEYEVENTF_KEYDOWN, 0);            
    }

    • Editado Manuel Mtz jueves, 7 de marzo de 2013 16:58
    jueves, 7 de marzo de 2013 16:52