Combinacion de teclas c#

Publicado en 'Programación' por joel094, 31 Mar 2015.





  1. joel094

    joel094 Miembro frecuente

    Registro:
    14 Oct 2012
    Mensajes:
    213
    Likes:
    7




    buen dia a todos haber una ayudita tengo un formulario que lo minimizo y quiziera mostrarlo al presionar por ejemplo F10+N o alguna combinacion de teclas me sale cuando es una sola tecla osea si presiono F10 si se maximiza y todo bien el problema es cuando quiero alguna combinacion de teclas les dejo el codigo gracias.

    Código:
    for (Int32 i = 0; i < 255; i++)
                {
                    int keyState = GetAsyncKeyState(i);
                    if (keyState == 1 || keyState == -32767)
                    {
                        String comniacion = Convert.ToString((Keys)i);
    
                        if (comniacion == "F10" + "N")
                        {
                            this.Show();
                            this.BringToFront();
                            button2.PerformClick();
                        }
                    }
                }
     


  2. gnox

    gnox Miembro maestro

    Registro:
    3 Ene 2013
    Mensajes:
    794
    Likes:
    252
    fn en algunos teclados es scancode 255 por lo que no entraría en tu codigo. En vez de hacer un loop deberías colocar un event listener y ahí preguntar por la tecla presionada, y no recorrer 255 veces por si se presiono una tecla, y usar el enum de teclas en vez de la representación String de la misma.
     
  3. eduar2083

    eduar2083 Miembro frecuente

    Registro:
    26 Jul 2011
    Mensajes:
    224
    Likes:
    46
    Hola. Si estás utilizando un controlador de evento KeyUp o KeyDown, puedes recurrir al objeto KeyEventArgs y utilizar la enumeración Keys.

    Código:
    private void HandlerKey(object sender, KeyEventArgs e)
            {
                Keys key = e.KeyCode;
    
                if (key == Keys.N && e.Control)
                {
                    this.WindowState = FormWindowState.Maximized;
                }
            }
    Saludos.