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,
Angela
Angela:
Lo mas fácil sería que uses un
MaskedTextBox, 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:
namespace TuEspacioDeNombres
{
enum enumTiposDeEntrada { Cadena, Numero };
class miMaskedTextBox:TextBox
{
private enumTiposDeEntrada tipoDeEntrada;
public miMaskedTextBox()
{
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(miMaskedTextBox_KeyPress);
}
public enumTiposDeEntrada TipoDeEntrada
{
set
{
tipoDeEntrada = value;
}
get
{
return tipoDeEntrada;
}
}
private void miMaskedTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
switch (this.tipoDeEntrada)
{
case enumTiposDeEntrada.Cadena:
if (!Char.IsLetter(e.KeyChar)) e.Handled = true;
break;
case enumTiposDeEntrada.Numero:
if (!Char.IsDigit(e.KeyChar)) e.Handled = true;
break;
}
}
}
}
Lo probé y funciona, faltan algunas cositas (como permitir la tecla de retroceso para borrar), pero eso te lo dejo a vos.
Un saludo