Red de conocimiento informático - Problemas con los teléfonos móviles - Evento TextChange para todos los cuadros de texto en Winform.

Evento TextChange para todos los cuadros de texto en Winform.

Personalice el nuevo control TextBox derivado del control TextBox, sobrecargue los métodos y eventos necesarios y modifique todos los cuadros de texto según el nuevo control TextBox. El siguiente es un ejemplo de un control de cuadro de texto personalizado:

El NumTextBox reescrito con el control TextBox implementa principalmente la función de permitir solo la entrada de números, o para cadena, numérico, moneda, decimal, flotante, double, Short, int, long, etc. agregue un atributo, que se puede configurar usando InputType, o puede expandirlo aún más usted mismo porque es de código abierto. Enumeración pública NumTextBoxType

{

Cuando String, // es esto, no se realiza ningún procesamiento, como un TextBox normal.

Valor, // siempre que sea un número.

Moneda,

Decimal,

Flotante,

Doble,

Corto,

Int,

Largo

}Código principal:

Usar el sistema;

Usar el sistema. Windows Forms

Usa el sistema. Modelo de componentes;

Utilizar el sistema. Texto .Expresión regular;

Espacio de nombres YongFa365. Control. NumTextBox

{

Clase pública NumTextBox: TextBox

{

tipo de entrada de tipo numtextbox privado = tipo de numtextbox. Número;

Enumeración pública NumTextBoxType

{

Cuando String, // es esto, no se realiza ningún procesamiento, como un TextBox normal.

Valor, // siempre que sea un número.

Moneda,

Decimal,

Flotante,

Doble,

Corto,

Int,

Long

}

Public NumTextBox()

{

Esto. menú contextual = nuevo menú contextual();

}

[

Categoría ("Configuración especial"),

DefaultValue(NumTextBoxType .Numeric),

Descripción("Establecer tipo permitido: \nLa cadena es la misma que la función TextBox normal\nNumeric, siempre que sea un número")

]

NumTextBoxType público tipo de entrada

{

obtener { return tipo de entrada}

establecer { tipo de entrada = valor}

}

texto de cadena de anulación pública

{

get{ base de retorno. texto;}

Configuración

{

if (IsValid(valor, verdadero))

{

base. texto = valor;

}

}

}

Booleano privado válido (valor de cadena, booleano usado)

{

bool ret = true

if(String.

IsNullOrEmpty(val))

{

return ret

}

if (uso)

{

if (val. es igual a ("-" amp; ampinputType! = NumTextBoxType. número)

{

return ret

}

}

Prueba

{

Cambiar (tipo de entrada)

{

case NumTextBoxType. cadena:

break;

case NumTextBoxType.number:

if (!regex.ismat(var,@" ^\d*$) ”)

{

ret = false

}

Break;

case NumTextBoxType Moneda:

decimal dec = decimal.

int pos = val.

if (pos! = -1)

{

ret = val. longitud lt = 3;

}

Break;

case NumTextBoxType.float:

float flt = float.

Break;

case NumTextBoxType double:

double dbl = double

break; p>case decimal:

decimal dec2 = decimal. parse(val);

Break;

case NumTextBoxType short:

corto s = corto. /p>

Romper;

case Int:

int i = int;

Romper;

case NumTextBoxType.long:

long l = long.parse(val);

break;

Predeterminado:

Lanzar nuevo excepción de aplicación();

}

}

Catch

{

ret = false

}

Devolver ret

}

Proceso bool de anulación protegido CmdKey (mensaje de referencia msj, Keys keyData)

{

if (keyData == tecla de método abreviado (Teclas). ctrl LV | | keyData = =(Teclas) teclas de método abreviado. ShiftIns)

{

IDaObject iData = Portapapeles. obtener objeto de datos();

Cadena nuevoTexto

nuevoTexto = base. Text.Substring(0, base. Seleccione Inicio)

(Cadena)iData. GetData(formato de datos. Texto)

Base. Texto.Subcadena(base.

Elija Iniciar básico. longitud de selección);

if (!IsValid(newText, true))

{

Devuelve verdadero

}

}

Regreso a la base. ProcessCmdKey(ref msg, key data);

}

Anulación protegida void OnLeave(EventArgs e)

{

If (! (inputType == NumTextBoxType. numérico | | tipo de entrada == numtextbox tipo. String))

{

if (base. text! = "")

{

If (!IsValid(base.Text, false))

{

Base. Texto =

}

else if (Double. parse(base.Text) == 0)

{

base. Texto = " 0

}

}

}

Base.en licencia(e);

}

Anulación protegida anulada al presionar una tecla (keypress eventargs e)

{

if (inputType!= NumTextBoxType.String)

{

char c = e . KeyChar

if (! Char. Control del sistema de información (c))

{

if (c) .ToString() == " ")

{

e.Processed=True;

Retorno;

}

string newText = base. Text.Substring(0, base. inicio de selección)

c.ToString() base de selección. !IsValid(newText, true))

{

e.processed=true;

}

}

}

Base (e);

}

}

}