none
Atajos de teclado para botones. RRS feed

Respuestas

  • hola

    ahh en ese caso puedes hacerlo por ejemplo si en los botones poens en el nombre el &

    por ejemplo

    btnSave.Text = "&Save"

     

    ene ste caso con Alt+S se acciona el boton

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 21 de mayo de 2010 18:34
  • hola

    en ese caso podrias usar el evento KeyDown del formulario

    Cómo capturar teclas de método abreviado de Visual Studio .NET

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 21 de mayo de 2010 19:00
  • hola

    no uses el ToString() en keycode usa el enumerado Keys

    if (e.Alt && e.KeyCode == Keys.P) {

    }

    cuando pulsas la tecla estas teniendo foco en el formulario, o en algun control ?

    porque puede que se de el evento en el control no en el form

    si esto es asi deberas usar el ProcessCmdKey

    Protected Overrides Function ProcessCmdKey( _

        ByRef msg As System.Windows.Forms.Message, _

        ByVal keyData As System.Windows.Forms.Keys) As Boolean

            ' Si el control DataGridView no tiene el foco,

            ' abandonamos el procedimiento.

            '

            If (Not DataGridView1.Focused) Then _

               Return MyBase.ProcessCmdKey(msg, keyData)

           ' Si la tecla presionada es distinta de la tecla +,

            ' abandonamos el procedimiento.

            '

            If (keyData <> Keys.Add) And (keyData <> Keys.Oemplus) Then _

                Return MyBase.ProcessCmdKey(msg, keyData)

     

           ' Obtenemos la celda actual

            '

            Dim cell As DataGridViewCell = DataGridView1.CurrentCell

            ' ¿ Estamos en la primera columna?

            '

            If cell.ColumnIndex <> 0 Then _

                Return MyBase.ProcessCmdKey(msg, keyData)

            ' Mostramos el formulario modal.

            '

            Dim frm As New Form2

            frm.ShowDialog()

            frm.Dispose()

               

            Return True

        End Function

    este si se lanza ante la presion de una tecla sin importal que control tenga el foco

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 24 de mayo de 2010 19:00

Todas las respuestas

  • hola

    imagino que te refieres a los shortcut del VS

    Visual C# 2008 Keybinding Reference Poster

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 21 de mayo de 2010 18:15
  • Hola

     no me referia a una aplicación creada por mi, no se si se pueden hacer atajos de teclado, no los atajos de teclado de VStudio

    viernes, 21 de mayo de 2010 18:32
  • hola

    ahh en ese caso puedes hacerlo por ejemplo si en los botones poens en el nombre el &

    por ejemplo

    btnSave.Text = "&Save"

     

    ene ste caso con Alt+S se acciona el boton

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 21 de mayo de 2010 18:34
  • Bien,,

     y si el boton no tiene texto? ejemplo es solo un icono se puede poner atajo de teclado?

    viernes, 21 de mayo de 2010 18:48
  • Y si quieres en vez de Alt+.. AlT+1+2 o en vez de Alt se puede con Ctrl+ ,,,,
    viernes, 21 de mayo de 2010 18:50
  • hola

    en ese caso podrias usar el evento KeyDown del formulario

    Cómo capturar teclas de método abreviado de Visual Studio .NET

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 21 de mayo de 2010 19:00
  • Hola , 

    tengo un boton que no tiene texto, es decir es solo un icono.

    PPruebo con el siguiente codigo

    private void FMenuPrincipalIFZ_KeyDown(object sender, KeyEventArgs e)

            {

                if (e.Alt && e.KeyCode.ToString() == "p") {

                    //this.KeyPreview = false;

                    BTPacientes_Click(sender, null);

                }

            }

    Sin embargo no  me entra siquiera en la funcion, a que puede ser debido?

    lunes, 24 de mayo de 2010 18:34
  • hola

    no uses el ToString() en keycode usa el enumerado Keys

    if (e.Alt && e.KeyCode == Keys.P) {

    }

    cuando pulsas la tecla estas teniendo foco en el formulario, o en algun control ?

    porque puede que se de el evento en el control no en el form

    si esto es asi deberas usar el ProcessCmdKey

    Protected Overrides Function ProcessCmdKey( _

        ByRef msg As System.Windows.Forms.Message, _

        ByVal keyData As System.Windows.Forms.Keys) As Boolean

            ' Si el control DataGridView no tiene el foco,

            ' abandonamos el procedimiento.

            '

            If (Not DataGridView1.Focused) Then _

               Return MyBase.ProcessCmdKey(msg, keyData)

           ' Si la tecla presionada es distinta de la tecla +,

            ' abandonamos el procedimiento.

            '

            If (keyData <> Keys.Add) And (keyData <> Keys.Oemplus) Then _

                Return MyBase.ProcessCmdKey(msg, keyData)

     

           ' Obtenemos la celda actual

            '

            Dim cell As DataGridViewCell = DataGridView1.CurrentCell

            ' ¿ Estamos en la primera columna?

            '

            If cell.ColumnIndex <> 0 Then _

                Return MyBase.ProcessCmdKey(msg, keyData)

            ' Mostramos el formulario modal.

            '

            Dim frm As New Form2

            frm.ShowDialog()

            frm.Dispose()

               

            Return True

        End Function

    este si se lanza ante la presion de una tecla sin importal que control tenga el foco

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 24 de mayo de 2010 19:00
  • Hola 

     el boton esta es un toolstripbutton osea de una barra, pero lo hago pulsando cuando tengo el control en  el formulario. La funcion ProcessCmdKey  no aparece como evento ni del formulario ni de la barra en c# al menos.

    lunes, 24 de mayo de 2010 20:47