none
Preciona cualquier tecla para continuar C# RRS feed

  • Pregunta

  • Buen día,

    Tengo un formulario en c# que mando a una pantalla de 49 pulgadas, y tengo otra pantalla de 7 pulgadas en la cual muestro un teclado.  Todo iba bien hasta que nos dijeron que donde sera instalada la aplicación no tendra mause, entonces teniamos un boton que al dar clic en un pictureBox mandaba al siguiente formulario.

    hay alguna funcion o metodo para que al precionar cualquier tecla de nuestro tecladito mostrado en la pantalla de 7 pulgadas nos abra el siguiente formulario???

    jueves, 5 de julio de 2018 20:50

Todas las respuestas

  • Usted puede programar los eventos KeyDown, KeyPress y KeyUp del formulario (previo seteo de la propiedad KeyPreview a true) para atrapar las teclas que se presionan.  Nótese, sin embargo, que Windows Forms ya provee algún soporte automático para esto.

    Por ejemplo, los formularios pueden tener un botón por defecto que responde automáticamente a la tecla ENTER (RETURN).  También nótese que puede tener un botón de cancelar que responda a la tecla ESC, y en general, cuando un botón tiene el enfoque de teclado, puede activarse con la barra espaciadora.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 5 de julio de 2018 20:54
    Moderador
  • Gracias por responder, pero no necesito mandar nada a otro formulario solo cerrar uno y abrir otro al precionar cualquier tecla!!

    Saludos.

    jueves, 5 de julio de 2018 21:03
  • hola

    pero la aplicacion tendra el foco cuando se presione la tecla?

    quizas evaluar algun hook como ser

    Global-Low-Level-Key-Board-And-Mouse-Hook

    o usar la api de windows

     A Simple C# Global Low Level Keyboard Hook

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 5 de julio de 2018 22:01
  • Gracias por responder, pero no necesito mandar nada a otro formulario solo cerrar uno y abrir otro al precionar cualquier tecla!!

    Saludos.

    Y lo puede hacer.  En los eventos que le comenté puede poner código para casi cualquier cosa:  Cerrar un formulario, abrir uno nuevo, abrir MS Excel, reiniciar la PC, imprimir, etc. etc. etc.

    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 5 de julio de 2018 22:03
    Moderador
  • Tienes razon, si lo pude hacer con un keyPress y funciona perfecto pero tengo otro problema, cuando termino todo el proceso que hace la aplicacion y me regresa a mi formulario principal ya no funciona la accion del keyPress hasta que reinicio la aplicacion. sabras si eso se puede hacer??

    Saludos,.

    lunes, 9 de julio de 2018 15:36
  • Muchas gracias, lo revisaréy te enviare mis comentarios..

    Saludos.

    lunes, 9 de julio de 2018 15:36
  • Tienes razon, si lo pude hacer con un keyPress y funciona perfecto pero tengo otro problema, cuando termino todo el proceso que hace la aplicacion y me regresa a mi formulario principal ya no funciona la accion del keyPress hasta que reinicio la aplicacion. sabras si eso se puede hacer??

    Saludos,.

    Ok, vamos avanzando.  En términos generales (porque no sé de su código así que no puedo hablar en otros términos), el código controlador de un evento se ejecutará cada vez que el evento ocurra siempre y cuando el objeto que genera el evento siga "vivo".  Verifique que su objeto está "vivo", que no lo ha perdido "de vista" (lo tiene como referencia en alguna variable apropiada, como una a nivel de clase, por ejemplo) y que no desconecta su controlador de evento de forma prematura.

    Recuerde también que cuando muestra un formulario, el nuevo formulario es quien tendrá el enfoque de teclado.  Si su controlador de teclas está en el formulario que NO tiene el enfoque de teclado, pues no se ejecutará su código controlador del evento porque pertenece al formulario que no recibe la información de teclas.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    lunes, 9 de julio de 2018 23:35
    Moderador
  • Esto no se si estará cerrado, espero no reabrir un hilo muerto, he tenido un creasea llegando a hacer esta misma operación en mi programa (una calculadora de números primos); El "pulse cualquier tecla para continuar" funciona, pero desde que lo añadí ha dejado de funcionar correctamente la entrada de datos de la aplicación para avanzar por el menú.

    Tengo una función que evalúa la linea de entrada parta seleccionar la siguiente función del programa:

            static int Prompt(int controlador)
            {
                char[] IllegalChars = new char[32] { '...' };
                string str = Console.ReadLine();
                string push = str.Trim(IllegalChars);
                Console.Write(str);
                bool indx = str.Contains(":indx") || (str.Contains(":i") || str.Contains(":1")) || false;
                if (indx == true)
                {
                    controlador = 1;
                }
                bool srv = str.Contains(":serv") || (str.Contains(":srv") || str.Contains(":2")) || false;
                if (srv == true)
                {
                    controlador = 2;
                }
                bool conf = str.Contains(":conf") || (str.Contains(":cfg") || str.Contains(":3")) || false;
                if (conf == true)
                {
                    controlador = 3;
                }
                bool help = str.Contains(":help") || (str.Contains(":h") || str.Contains(":4")) || false;
                if (help == true)
                {
                    controlador = 4;
                }
                bool quit = str.Contains(":quit") || (str.Contains(":q") || str.Contains(":5")) || false;
                if (quit == true)
                {
                    controlador = 5;
                }
                return controlador;
            }

    Entiendo que dado que no es un case si se da una opción inferior a 5 no definirá el resto de variables y cargará una función previa que se haya evaluado de manera exitosa, el efecto es que actualmente mi programa solo hace una cosa, lo cambiaré por case y creo que lo resolveré espero que ayude.

    p.d: Mas besos y menos covid xP

    martes, 2 de marzo de 2021 11:58