none
¿Cómo saber cuando se están presionando varias teclas? RRS feed

  • Pregunta

  • Estoy programando un form desde el cual tengo qeu abrir otro oculto al presionar una combinación de tres teclas. Lo he logrado de la siguiente manera, pero sólo para una tecla presionada. ¿Me ayudan? 

        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
          if (keyData.Equals(Keys.F7))
          {
            frmConfiguracionDB oConfiguracionDB = frmConfiguracionDB.Instance();
            oConfiguracionDB.Show();
            oConfiguracionDB.WindowState = FormWindowState.Normal;
            oConfiguracionDB.BringToFront();
          }
          return base.ProcessCmdKey(ref msg, keyData);
        }
     
    


    Gabriela
    viernes, 7 de enero de 2011 21:54

Respuestas

  • hola

    no has probado algo como esto para combinar teclas:

     

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        switch (keyData)
        {
            case (Keys.F7 | Keys.ControlKey ):
           
                frmConfiguracionDB oConfiguracionDB = frmConfiguracionDB.Instance();
                oConfiguracionDB.Show();
                oConfiguracionDB.WindowState = FormWindowState.Normal;
                oConfiguracionDB.BringToFront();
               
                return true;
           
            case (Keys.F6 | Keys.ControlKey ):
           
                .
                .
               
                return true;
           
        }
        
        return base.ProcessCmdKey(ref msg, keyData);
    }

     

    como veras ahi estas esperando la combinacion de las teclas F7 y Control, pero puedes aplciar la misma tecncia para cualqueir otra combinacion de teclas

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    reemplasa ControlKey x Control

    switch (keyData)<br/>
    {<br/>
      case (Keys.F7 | Keys.Control):<br/>
         break;<br/>
    }<br/>
    <br/>
    
    

    keyData contiene la tecla y la tecla modificador para poder obtenerlas por separado puedes hacer esto:

    Keys modifiers = (keyData & Keys.Modifiers);
    Keys key = (keyData & Keys.KeyCode);
    if (modifiers == Keys.Control && key == Keys.F7)
    {
      MessageBox.Show("Control F7 presionado");
    }
    
    Salu2,


    Marvin E. Pineda

    Marvin's Blog
    San Pedro Sula
    Honduras. C.A.


    Aún el necio cuando calla, es contado por sabio.
    viernes, 7 de enero de 2011 22:42
    Moderador

Todas las respuestas

  • hola

    no has probado algo como esto para combinar teclas:

     

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        switch (keyData)
        {
            case (Keys.F7 | Keys.ControlKey ):
           
                frmConfiguracionDB oConfiguracionDB = frmConfiguracionDB.Instance();
                oConfiguracionDB.Show();
                oConfiguracionDB.WindowState = FormWindowState.Normal;
                oConfiguracionDB.BringToFront();
               
                return true;
           
            case (Keys.F6 | Keys.ControlKey ):
           
                .
                .
               
                return true;
           
        }
        
        return base.ProcessCmdKey(ref msg, keyData);
    }

     

    como veras ahi estas esperando la combinacion de las teclas F7 y Control, pero puedes aplciar la misma tecncia para cualqueir otra combinacion de teclas

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 7 de enero de 2011 22:15
  • hola

    no has probado algo como esto para combinar teclas:

     

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        switch (keyData)
        {
            case (Keys.F7 | Keys.ControlKey ):
           
                frmConfiguracionDB oConfiguracionDB = frmConfiguracionDB.Instance();
                oConfiguracionDB.Show();
                oConfiguracionDB.WindowState = FormWindowState.Normal;
                oConfiguracionDB.BringToFront();
               
                return true;
           
            case (Keys.F6 | Keys.ControlKey ):
           
                .
                .
               
                return true;
           
        }
        
        return base.ProcessCmdKey(ref msg, keyData);
    }

     

    como veras ahi estas esperando la combinacion de las teclas F7 y Control, pero puedes aplciar la misma tecncia para cualqueir otra combinacion de teclas

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    reemplasa ControlKey x Control

    switch (keyData)<br/>
    {<br/>
      case (Keys.F7 | Keys.Control):<br/>
         break;<br/>
    }<br/>
    <br/>
    
    

    keyData contiene la tecla y la tecla modificador para poder obtenerlas por separado puedes hacer esto:

    Keys modifiers = (keyData & Keys.Modifiers);
    Keys key = (keyData & Keys.KeyCode);
    if (modifiers == Keys.Control && key == Keys.F7)
    {
      MessageBox.Show("Control F7 presionado");
    }
    
    Salu2,


    Marvin E. Pineda

    Marvin's Blog
    San Pedro Sula
    Honduras. C.A.


    Aún el necio cuando calla, es contado por sabio.
    viernes, 7 de enero de 2011 22:42
    Moderador
  • Lo hice como dijo Marvin, de la siguiente forma:

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
      Keys modifiers = (keyData & Keys.Modifiers);
      Keys key = (keyData & Keys.KeyCode);
      if ((modifiers.Equals(Keys.Control | Keys.Alt)) && key.Equals(Keys.F7))
      {
        frmConfiguracionDB oConfiguracionDB = frmConfiguracionDB.Instance();
        oConfiguracionDB.Show();
        oConfiguracionDB.WindowState = FormWindowState.Normal;
        oConfiguracionDB.BringToFront();
      }
    
      return base.ProcessCmdKey(ref msg, keyData);
    }
    


    Gabriela
    sábado, 8 de enero de 2011 22:53