Archivo

Posts Tagged ‘VB.NET’

Control en textbox VB.NET

Agradesco a un colaborador por esta ayuda.

PrivateSub txtImporte_KeyPress(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtImporte.KeyPress

Dim isDecimal, isMinus, isValidChar AsBoolean

Dim separadorDecimal AsString = Nothing

SelectCase e.KeyChar

Case“.”c, “,”c

‘ Obtenemos el carácter separador decimal existente

‘ actualmente en la configuración regional de Windows.

separadorDecimal = _

Threading.

Thread.CurrentThread. _

CurrentCulture.NumberFormat.NumberDecimalSeparator

‘ Hacemos que el carácter tecleado coincida con el

‘ carácter separador existentente en la configuración

‘ regional.

e.KeyChar = separadorDecimal.Chars(0)

‘ Es un carácter válido.

isDecimal =

True

isValidChar =

True

Case“-“c

‘ Es un carácter válido.

isMinus =

True

isValidChar =

True

Case Else

‘ Sólo se admitirán números y la tecla de retroceso.

Dim isDigit AsBoolean = Char.IsDigit(e.KeyChar)

Dim isControl AsBoolean = Char.IsControl(e.KeyChar)

If ((isDigit) OrElse (isControl)) Then

isValidChar =

True

Else

e.Handled =

True

Return

EndIf

EndSelect

‘ Referenciamos el control TextBox subyacente.

Dim tb AsTextBox = TryCast(sender, TextBox)

‘ Si la conversión ha fallado, abandonamos el procedimiento.

If (tb IsNothing) Then

e.Handled =

True

Return

EndIf

‘ Si es un carácter válido, y el texto del control

‘ se encuentra totalmente seleccionado, elimino

‘ el valor actual del control.

If ((isValidChar) And (tb.SelectionLength = tb.TextLength)) Then

tb.Text =

String.Empty

EndIf

If (isMinus) Then

‘ Admitimos el carácter negativo, siempre y cuando

‘ sea el primer carácter del texto, y no exista ya

‘ ningún otro signo negativo.

If ((tb.Text.Length <> 0) OrElse (tb.Text.IndexOf(“-“c) >= 0)) Then

e.Handled =

True

Return

EndIf

EndIf

If (isDecimal) Then

‘ Si en el control hay ya escrito un separador decimal,

‘ deshechamos insertar otro separador más.

If (tb.Text.IndexOf(separadorDecimal) >= 0) Then

e.Handled =

True

Return

EndIf

EndIf

EndSub

Anuncios
Categorías:VB.NET Etiquetas: