SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: JaviMarciano en Miércoles 17 de Marzo de 2010, 05:03

Título: Cambiar entre textbox al pulsar enter
Publicado por: JaviMarciano en Miércoles 17 de Marzo de 2010, 05:03
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'
Título: Re: Cambiar entre textbox al pulsar enter
Publicado por: JaviMarciano en Miércoles 17 de Marzo de 2010, 12:13
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
Título: Re: Cambiar entre textbox al pulsar enter
Publicado por: JaviMarciano en Miércoles 17 de Marzo de 2010, 12:35
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í?
Título: Re: Cambiar entre textbox al pulsar enter
Publicado por: eltruhanero en Jueves 18 de Marzo de 2010, 02:01
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.
Título: Re: Cambiar entre textbox al pulsar enter
Publicado por: JaviMarciano en Jueves 18 de Marzo de 2010, 23:31
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
Título: Re: Cambiar entre textbox al pulsar enter
Publicado por: F_Tanori en Viernes 19 de Marzo de 2010, 14:41
: 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.google.com.mx/#hl=es&source=hp&q=Enter+as+Tab+C%23&meta=&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=f4a9340d5f9f4a3e" onclick="window.open(this.href);return false;)
http://www.c-sharpcorner.com/UploadFile ... bKeys.aspx (http://www.c-sharpcorner.com/UploadFile/ykouame/EnterTabKeys11302005045228AM/EnterTabKeys.aspx" onclick="window.open(this.href);return false;)

Saludos
Título: Re: Cambiar entre textbox al pulsar enter
Publicado por: ehguacho en Jueves 8 de Abril de 2010, 01:58
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.  
Título: Re: Cambiar entre textbox al pulsar enter
Publicado por: gabio2 en Jueves 8 de Abril de 2010, 17:37
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.  
Título: Re: Cambiar entre textbox al pulsar enter
Publicado por: Jeysscarr en Viernes 9 de Abril de 2010, 20:40
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