Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] shortcut para TextBox

Estas en el tema de shortcut para TextBox en el foro de .NET en Foros del Web. Hola amig@s! Para la aplicación que estoy desarrollando en C# me piden que al pulsar ctrl+B el foco se vaya al TextBox de buscar. He ...
  #1 (permalink)  
Antiguo 04/07/2017, 01:47
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
shortcut para TextBox

Hola amig@s!

Para la aplicación que estoy desarrollando en C# me piden que al pulsar ctrl+B el foco se vaya al TextBox de buscar.
He probado con los eventos de dicho TextBox KeyUp y KeyDown, pero sólo me funciona cuando el foco está ya en este campo... Qué tontería, si yo lo que quiero es que desde cualquier sitio del form me lo haga.

Código C#:
Ver original
  1. if (Convert.ToInt32(e.KeyData) == Convert.ToInt32(Keys.Control) + Convert.ToInt32(Keys.B))
  2.             {
  3.                 MessageBox.Show("Se ha pulsado la combinación de teclas Control+B");
  4.             }

Utilizo este código que he rescatado de la web para los eventos que he comentado antes.

Muchas gracias!!
  #2 (permalink)  
Antiguo 04/07/2017, 08:54
Avatar de Namiwis  
Fecha de Ingreso: mayo-2013
Ubicación: Crustaceo Cascarudo
Mensajes: 162
Antigüedad: 11 años, 6 meses
Puntos: 10
Respuesta: shortcut para TextBox

Hola aniMAYtions

Cita:
He probado con los eventos de dicho TextBox KeyUp y KeyDown, pero sólo me funciona cuando el foco está ya en este campo
Claro por que el evento KeyDown,KeyUp lo estas colocando en el lugar incorrecto segun indicas, has probado en ponerlo en esos eventos pero del Formulario? no del TextBox, deberia resultado.

Saludos.
__________________
http://binarysuns.com.mx/
  #3 (permalink)  
Antiguo 04/07/2017, 09:39
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años, 6 meses
Puntos: 16
Respuesta: shortcut para TextBox

Buenas compañero,

Lo que necesitas es código de jQuery.
Prueba con esto y me cuentas...!

Código Javascript:
Ver original
  1. $(document).on("keydown", function(e){
  2.   var code = e.keyCode || e.which;
  3.  
  4.   if (code==66 && e.ctrlKey){
  5.         $("#txtBuscar").focus();
  6.   }
  7. });


Un saludo!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #4 (permalink)  
Antiguo 04/07/2017, 10:32
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: shortcut para TextBox

Gracias por las respuestas!

A ver, como eventos del Windows Form dices? Podría ponerle tantos como shortcuts quiero meter?Cada botón lleva uno... Que esa es otra, yo pensaba que en las propiedades del botón te venía un atributo para que se lo pusieses, pero no lo veo...

Cómo puedo embeber javascript en C#? Yo eso no lo sabía y de javascript si entiendo.

Saludos!
  #5 (permalink)  
Antiguo 04/07/2017, 10:49
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años, 6 meses
Puntos: 16
Respuesta: shortcut para TextBox

A ver... Espera, ¿lo estás buscando para una aplicación de windows o una aplicación web?
Porque yo pensaba que estabas buscando para una aplicación web.
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #6 (permalink)  
Antiguo 04/07/2017, 11:01
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años, 6 meses
Puntos: 16
Respuesta: shortcut para TextBox

Si lo necesitas para WinForms... Esta es la solución que te ofrezco:
Código vb:
Ver original
  1. Private Sub _KeyDown(sender As Object, e As KeyEventArgs)
  2.         Dim iCodigo As Integer = e.KeyCode
  3.  
  4.         If e.Control AndAlso iCodigo = 66 Then
  5.             txtBuscar.Focus()
  6.         End If
  7.     End Sub
  8.  
  9.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
  10.         For Each oControl As Control In Controls
  11.             AddHandler oControl.KeyDown, AddressOf _KeyDown
  12.         Next
  13.     End Sub
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #7 (permalink)  
Antiguo 05/07/2017, 10:52
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: shortcut para TextBox

Cita:
Iniciado por Drako_18 Ver Mensaje
A ver... Espera, ¿lo estás buscando para una aplicación de windows o una aplicación web?
Porque yo pensaba que estabas buscando para una aplicación web.
Jejeje, esta vez tiene que ser para una aplicación windows en C#. Si fuese web ya estaría resuelto...

El subforo .NET es para esto, no??

Es la primera vez que programo algo serio en .NET, siempre me he dedicado a la web. Lo que quería decirte es que... Puedes explicarme un poco el código que me has escrito? Es que copiar y pegar sin enterarme...
Lo de Dim ... As lo he visto, pero creo que en Visual Basic, o no?? Ando un poco perdida aún, sorry.

Mil gracias!
  #8 (permalink)  
Antiguo 05/07/2017, 14:01
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años, 6 meses
Puntos: 16
Respuesta: shortcut para TextBox

Buenas compañero!

Cierto, este foro de .Net es para poner cualquier duda de .Net ya sea WinForms o WebForms :)

Te lo pongo traducido en C# (yo me manejo mejor en vb.Net jejeje) y te lo explico en el propio código.
Código C:
Ver original
  1. private void _KeyDown(object sender, KeyEventArgs e) //Creamos un método privado con la firma necesaria para el evento KeyDown, personalmente, me gusta llamarles igual que el evento anteponiendo una barra baja.
  2. {
  3.     int iCodigo = e.KeyCode;//Obtenemos el código de la tecla pulsada.
  4.  
  5.     if (e.Control && iCodigo == 66) { Verificamos que está pulsado el botón Control y además la tecla pulsada es la "b" minúscula
  6.         txtBuscar.Focus(); //Con esto, ponemos el focus en la caja de texto.
  7.     }
  8. }
  9.  
  10. private void Form1_Load(object sender, EventArgs e) //Evento load del formulario windows.
  11. {
  12.     foreach (Control oControl in this.Controls) { //Recorremos los controles del formulario windows.
  13.         oControl.KeyDown += _KeyDown; //Con esto, agregamos un evento de tipo KeyDown a cada uno de los controles del formulario.
  14.     }
  15. }

Espero te haya resuelto las dudas! :)


Un saludo compañero!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #9 (permalink)  
Antiguo 10/07/2017, 11:16
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: shortcut para TextBox

GRACIAS, GRACIAS, MIL GRACIAS!!!

Aún no lo he probado, pero estoy convencida de que funcionará.

Son demasiadas cosas las que lleva la aplicación, y por eso tardo en responder, lo siento :( Voy aprendiendo mientras la hago y ahora estoy con... Si no encuentro la solución pongo la pregunta en otro post!!

Gracias de nuevo y Saludos!!
  #10 (permalink)  
Antiguo 10/07/2017, 13:05
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años, 6 meses
Puntos: 16
Respuesta: shortcut para TextBox

No hay problema, cualquier cosa estamos por aquí, aún somos unos cuantos a los que nos gusta ayudar a la gente.

Salu2 miarma!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #11 (permalink)  
Antiguo 01/08/2017, 10:00
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: shortcut para TextBox

Gracias Drako_18!

Yo también ayudaría, pero cuando pueda claro, mientras solo pregunto...
He dejado el tema de los shortcuts para más adelante, ya no me atosigan con eso y puedo avanzar en cosas más complejas.

Saludos!!
  #12 (permalink)  
Antiguo 20/09/2017, 06:53
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: shortcut para TextBox

Al final lo conseguí y no fue tan difícil. Os copio el código y doy el tema por solucionado :)

1º En los atributos del form hay que cambiar KeyPreview a True.
2º En el método KeyDown es donde va el código:
Código CSharp:
Ver original
  1. private void MyForm_KeyDown(object sender, KeyEventArgs e)//evento del formulario
  2. {
  3.      if(e.KeyCode == Keys.N && e.Control)
  4.      {
  5.         PulsoNuevo();
  6.      }
  7. }
  8.  
  9. private void bNuevo_Click(object sender EventArgs e)//evento del botón
  10. {
  11.    PulsoNuevo();
  12. }
  13.  
  14. private void PulsoNuevo()
  15. {
  16.    //Aquí el método en sí
  17. }

Mil gracias por vuestra orientación.
Saludos!!

Etiquetas: control, textbox
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:20.