• Domingo 17 de Noviembre de 2024, 17:45

Autor Tema:  Cambiar entre textbox al pulsar enter  (Leído 10651 veces)

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Cambiar entre textbox al pulsar enter
« en: Miércoles 17 de Marzo de 2010, 05:03 »
0
Hola Espero que me puedan dar una mano
No se donde estoy cometiendo un error
mi código es el siguiente:
Código: C#
  1.  private void textBox1_TextChanged(object sender,EventArgs e)
  2.         {
  3.            
  4.             if (e.Keychar == 'r')
  5.                 textBox2.Focus();
  6.         }
  7.  


Código: C#
  1. this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
  2.  
  3.  

Necesito desplazarme entre los textBox presionando la tecla Enter
El error que me arroja es el sig.
Citar
Error   1   'System.EventArgs' no contiene una definición para 'Keychar'

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Cambiar entre textbox al pulsar enter
« Respuesta #1 en: Miércoles 17 de Marzo de 2010, 12:13 »
0
Código: C#
  1. private void textBox1_KeyDown(object sender, KeyEventArgs e)
  2.         {
  3.             if (e.KeyValue == 'r')
  4.                 textBox2.Focus();
  5.         }
  6.  

oooh! ya está  Trabajando con el evento keyDown

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Cambiar entre textbox al pulsar enter
« Respuesta #2 en: Miércoles 17 de Marzo de 2010, 12:35 »
0
Cita de: "JaviMarciano"
Código: C#
  1. private void textBox1_KeyDown(object sender, KeyEventArgs e)
  2.         {
  3.             if (e.KeyValue == 'r')
  4.                 textBox2.Focus();
  5.         }
  6.  

oooh! ya está  Trabajando con el evento keyDown

Teniendo esto listo surge una nueva duda:

tengo 10 textBox y necesito hacer lo mismo para los 10 como puedo ahorrar lineas de código?
se  puede hacer un método y pasar el control por parámetro o algo así?

eltruhanero

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
Re: Cambiar entre textbox al pulsar enter
« Respuesta #3 en: Jueves 18 de Marzo de 2010, 02:01 »
0
Lo que se me ocurre es obtener por Reflection los textBox definidos en el Form y  aplicar el Focus al que corresponda.

Para setear el recorrido del focus al apretar "Enter" podrias usar TextBox.TabIndex.

O sea si estas en el textBox que tiene seteado TabIndex = x, buscas el que tenga seteado TabIndexx+1 y a ese aplicas el Focus.

Se entiende?

Daniel.

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Cambiar entre textbox al pulsar enter
« Respuesta #4 en: Jueves 18 de Marzo de 2010, 23:31 »
0
Cita de: "eltruhanero"
Lo que se me ocurre es obtener por Reflection los textBox definidos en el Form y  aplicar el Focus al que corresponda.

Para setear el recorrido del focus al apretar "Enter" podrias usar TextBox.TabIndex.

O sea si estas en el textBox que tiene seteado TabIndex = x, buscas el que tenga seteado TabIndexx+1 y a ese aplicas el Focus.

Se entiende?

Daniel.

Ok voy a probar y después cuento, Gracias

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cambiar entre textbox al pulsar enter
« Respuesta #5 en: Viernes 19 de Marzo de 2010, 14:41 »
0
: Esta 'funcionalidad' es inutil en textbox multilinea. :

Pero creo que puedes Intentar crearte un metodo

No estoy muy diestro en C#, pero creo que es algo asi (espero :P)

Código: C#
  1. private void  enviarFoco(object oControl){
  2.    oControl.Focus();
  3. }
  4.  


Algunas ideas:
http://www.google.com.mx/#hl=es&source= ... 0d5f9f4a3e
http://www.c-sharpcorner.com/UploadFile ... bKeys.aspx

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

ehguacho

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Cambiar entre textbox al pulsar enter
« Respuesta #6 en: Jueves 8 de Abril de 2010, 01:58 »
0
probá así:
Código: C#
  1. private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
  2. {
  3.     if (e.KeyChar == (char)Keys.Enter)
  4.     {
  5.         e.Handled = true;
  6.         button1.Focus();
  7.     }
  8. }
  9.  

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re: Cambiar entre textbox al pulsar enter
« Respuesta #7 en: Jueves 8 de Abril de 2010, 17:37 »
0
Yo utilizo esto y me funciona a la perfección. :) saludos.
Código: C#
  1.  
  2.   private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
  3.         {
  4.             if (e.KeyChar == (char)13)
  5.             {
  6.                 textBox2.Focus();
  7.             }
  8.         }
  9.  
  10.  
@gabio87

Jeysscarr

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: Cambiar entre textbox al pulsar enter
« Respuesta #8 en: Viernes 9 de Abril de 2010, 20:40 »
0
Pues si lo que quieres es ahorrar codigo crea una clase llamada MITextBox o algo por el estilo

y hereda de la clase base System.Windows.Forms.Textbox

ahora debes agregar una propiedad que se llame TextboxSiguiente o algo asi, yo lo hice con esta clase:



Código: C#
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Windows.Forms;
  7.  
  8. namespace MiTextBox
  9. {
  10.     class TextBoxPersonalizado:System .Windows .Forms .TextBox
  11.     {
  12.         TextBox t;
  13.         public TextBox txtSiguiente
  14.         {
  15.             get
  16.             {
  17.                 return t;
  18.             }
  19.             set
  20.             {
  21.                 t = value;
  22.             }
  23.         }
  24.  
  25.         protected override void OnKeyPress(KeyPressEventArgs e)
  26.         {
  27.             base.OnKeyPress(e);
  28.             if ((e.KeyChar == (char)13)&&(txtSiguiente !=null))
  29.              {
  30.                 txtSiguiente.Focus();
  31.              }
  32.         }
  33.     }
  34. }
  35.  
  36.  

al hacer 'Overrides' el evento Onkeypress de la clase base ya tienes determinado el codigo que los compañeros te dieron y wala..

generas el proyecto y esto generará un nuevo control llamado textboxpersonalizado
asi en vez de usar Textboxes usaras MiTextox1, MItextbox2 y asi todos los que quieras...
funcionaran perfectamente igual pero tendran algo adicional...
que en el panel de propiedades al poner un control en la propiedad TExtboxSiguiente se hara el cambio automaticamente
Nuestro poder está creciendo mas rápido que nuestra sabiduria