SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: angelarg en Lunes 18 de Agosto de 2008, 04:57

Título: extender TextBox
Publicado por: angelarg en Lunes 18 de Agosto de 2008, 04:57
Hola,

Alguien me puede decir cómo hago para extender un textBox para que se pueda seleccionar si se va a digitar un string o números?...  sé cómo hacer para que solo se puedan digitar números, pero la idea sería tener una nueva propiedad en las propiedades del textBox que me permitiera selecionar entre string y números y que me validara lo que se digite en el campo según el tipo que yo seleccione en esta propiedad.  Gracias,   :D

Angela
Título: Re: extender TextBox
Publicado por: Mollense en Lunes 18 de Agosto de 2008, 15:59
Cita de: "angelarg"
Hola,

Alguien me puede decir cómo hago para extender un textBox para que se pueda seleccionar si se va a digitar un string o números?...  sé cómo hacer para que solo se puedan digitar números, pero la idea sería tener una nueva propiedad en las propiedades del textBox que me permitiera selecionar entre string y números y que me validara lo que se digite en el campo según el tipo que yo seleccione en esta propiedad.  Gracias,   :D

Angela
Angela:
Lo mas fácil sería que uses un MaskedTextBox (http://msdn.microsoft.com/es-es/library/system.windows.forms.maskedtextbox(VS.80).aspx), pero si necesitás hacerlo hacerlo sí o sí de la manera que nos mencionás, vas a tener que crear una nueva clase que herede de un TextBox e implementarle la nueva propiedad. Después podrías usar el evento keyPress para realizar las validaciones según el tipo de entrada seleccionado:

Código: Text
  1. namespace TuEspacioDeNombres
  2. {
  3.     enum enumTiposDeEntrada { Cadena, Numero };
  4.     class miMaskedTextBox:TextBox
  5.     {
  6.         private enumTiposDeEntrada tipoDeEntrada;
  7.  
  8.         public miMaskedTextBox()
  9.         {
  10.             this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(miMaskedTextBox_KeyPress);
  11.         }
  12.  
  13.         public enumTiposDeEntrada TipoDeEntrada
  14.         {
  15.             set
  16.             {
  17.                 tipoDeEntrada = value;
  18.             }
  19.             get
  20.             {
  21.                 return tipoDeEntrada;
  22.             }
  23.         }
  24.  
  25.         private void miMaskedTextBox_KeyPress(object sender, KeyPressEventArgs e)
  26.         {
  27.             switch (this.tipoDeEntrada)
  28.             {
  29.                 case enumTiposDeEntrada.Cadena:
  30.                     if (!Char.IsLetter(e.KeyChar)) e.Handled = true;
  31.                     break;
  32.                 case enumTiposDeEntrada.Numero:
  33.                     if (!Char.IsDigit(e.KeyChar)) e.Handled = true;
  34.                     break;
  35.             }
  36.         }
  37.     }
  38. }
  39.  

Lo probé y funciona, faltan algunas cositas (como permitir la tecla de retroceso para borrar), pero eso te lo dejo a vos.

Un saludo
Título: Re: extender TextBox
Publicado por: angelarg en Lunes 18 de Agosto de 2008, 17:31
Mil  gracias...  lo voy a ensayar   :D   ayer traté con los enum, pero no supe cómo hacerlo   :wacko:   es que apenas estoy en clases, por eso tenía una vaga idea de cómo hacerlo  pero no funcionó :(  ...  ya mismo hago lo que dices...  gracias de nuevo!!!!   :lol:   :lol:   :lol:
Título: Re: extender TextBox
Publicado por: angelarg en Lunes 18 de Agosto de 2008, 19:55
Ya lo probé...  que lindo!!!  ....  no sabía cómo lograr poner esa nueva propiedad!!!....  mil gracias!!!  :lol:   :lol:   :lol:
Título: Re: extender TextBox
Publicado por: Mollense en Martes 19 de Agosto de 2008, 01:41
Cita de: "angelarg"
Ya lo probé...  que lindo!!!  ....  no sabía cómo lograr poner esa nueva propiedad!!!....  mil gracias!!!  :lol:   :lol:   :lol:
¿Que lindo yo? , no hace falta que contestes :P
Es un placer ayudar :beer:
Título: Re: extender TextBox
Publicado por: angelarg en Martes 19 de Agosto de 2008, 01:45
pues, qué lindo el código y la verdad, qué lindo tú!!!   ^_^