none
Txtbox no escribe el primer caracter RRS feed

  • Pregunta

  • Hola a todos,

    Una pregunta, porque en el sig código al escribir el primer caracter en el textbox no lo hace, si no hasta la segunda vez que tecleo.

      Private Sub txtNo_Cliente_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtNo_Cliente.KeyPress
            If Char.IsLetterOrDigit(e.KeyChar) Then
                e.Handled = False
            ElseIf e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Back) Then
                e.Handled = False
            Else
                e.Handled = True
            End If
            Me.txtNo_Cliente.CharacterCasing = CharacterCasing.Upper
      
    
        End Sub

    Gracias

    martes, 26 de noviembre de 2013 18:48

Respuestas

  • Quita el CharacterCasing de allí. Ponlo en el Load, en el InitializeComponent (o sea, desde la caja de propiedades).

    Ocurre obviamente como consecuencia de la implementación de la propiedad. Vos estás asignando la propiedad continuamente, pero solamente haces un cambio luego del primer caracter, por lo que la implementación no realiza ninguna acción.

    Prueba este código, y verás que el continuo cambio evita que la cadena crezca.

    Private Sub txtNo_Cliente_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtNo_Cliente.KeyPress
    
    	If Char.IsLetterOrDigit(e.KeyChar) Then
    		e.Handled = False
    	ElseIf e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Back) Then
    		e.Handled = False
    	Else
    		e.Handled = True
    	End If
    
    	If Me.txtNo_Cliente.CharacterCasing = CharacterCasing.Upper Then
    		Me.txtNo_Cliente.CharacterCasing = CharacterCasing.Lower
    	Else
    		Me.txtNo_Cliente.CharacterCasing = CharacterCasing.Upper
    	End If
    
    End Sub
    


    Entonces, no metas el CharacterCasing dentro del evento.

    [W]


    • Editado [Walter] martes, 26 de noviembre de 2013 19:29
    • Marcado como respuesta jaguar17 martes, 26 de noviembre de 2013 21:22
    martes, 26 de noviembre de 2013 19:25

Todas las respuestas

  • Quita el CharacterCasing de allí. Ponlo en el Load, en el InitializeComponent (o sea, desde la caja de propiedades).

    Ocurre obviamente como consecuencia de la implementación de la propiedad. Vos estás asignando la propiedad continuamente, pero solamente haces un cambio luego del primer caracter, por lo que la implementación no realiza ninguna acción.

    Prueba este código, y verás que el continuo cambio evita que la cadena crezca.

    Private Sub txtNo_Cliente_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtNo_Cliente.KeyPress
    
    	If Char.IsLetterOrDigit(e.KeyChar) Then
    		e.Handled = False
    	ElseIf e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Back) Then
    		e.Handled = False
    	Else
    		e.Handled = True
    	End If
    
    	If Me.txtNo_Cliente.CharacterCasing = CharacterCasing.Upper Then
    		Me.txtNo_Cliente.CharacterCasing = CharacterCasing.Lower
    	Else
    		Me.txtNo_Cliente.CharacterCasing = CharacterCasing.Upper
    	End If
    
    End Sub
    


    Entonces, no metas el CharacterCasing dentro del evento.

    [W]


    • Editado [Walter] martes, 26 de noviembre de 2013 19:29
    • Marcado como respuesta jaguar17 martes, 26 de noviembre de 2013 21:22
    martes, 26 de noviembre de 2013 19:25
  • Mejor explicación no pude encontrar, te agradezco mucho Walter!

    Slds!

    martes, 26 de noviembre de 2013 21:22