none
Ayuda con Textbox

    Pregunta

  • Buenas tardes alguien puede ayudarme

    tengo varios textbox en un form lo que quiero es que cada vez que en el txtbox tenga el focus empiece a parpadear (cambiar  el backcolor de colores ejemplos de blanco/rojo/blanco/rojo..... ) 

    txtbox1 =blanco/rojo/blanco/rojo 

    al pasar al siguiente txtbox 

    txtbox1 =blanco

    txtbox2 = blanco/rojo/blanco/rojo

    viernes, 30 de diciembre de 2016 18:21

Respuestas

  • Cesaugusto,

    ¿Es necesario tanto "festival" en un control que obtuvo el foco? Quizá hubiese bastado únicamente con pintar el fondo del control, algo sutil. Bueno, para resolver lo que planteas vamos por un ejemplo simple:

    Necesitamos una instancia de la clase Timer y vincular a dos únicos controladores los eventos Enter y Leave (de los controles TextBox):

    Dim Temporizador As New Timer()
    
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
    	'Vincular todos los controles a un único controlador para el evento Enter
    	AddHandler Me.txtPrimero.Enter, AddressOf TextBox_Focus
    	AddHandler Me.txtSegundo.Enter, AddressOf TextBox_Focus
    	AddHandler Me.txtTercero.Enter, AddressOf TextBox_Focus
    
    	'Vincular todos los controles a un único controlador para el evento Leave
    	AddHandler Me.txtPrimero.Leave, AddressOf TextBox_FocusOut
    	AddHandler Me.txtSegundo.Leave, AddressOf TextBox_FocusOut
    	AddHandler Me.txtTercero.Leave, AddressOf TextBox_FocusOut
    
    	'Definir intervalo a 500 milisegundos
    	Temporizador.Interval = 500
    	'Agregar un controlador para el evento Tick
    	AddHandler Me.Temporizador.Tick, AddressOf Temporizador_Tick
    	
    End Sub		

    Luego escribimos el código necesario para los controladores TextBox_Focus, TextBox_FocusOut y Temporizador_Tick:

    Private Sub Temporizador_Tick(sender As Object, e As EventArgs)
    
    	Dim Control As Control = Me.ActiveControl
    
    	If TypeOf Control Is TextBox Then
    		Control.BackColor = If(Control.BackColor = Color.White, Color.LightCyan, Color.White)
    	End If
    
    End Sub
    
    Private Sub TextBox_Focus(sender As Object, e As EventArgs)
    
    	Dim txt As TextBox = DirectCast(sender, TextBox)
    
    	txt.BackColor = Color.LightCyan
    	Temporizador.Start()
    
    End Sub
    
    Private Sub TextBox_FocusOut(sender As Object, e As EventArgs)
    
    	Dim txt As TextBox = DirectCast(sender, TextBox)
    
    	txt.BackColor = Color.White
    	Temporizador.Stop()
    
    End Sub


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 30 de diciembre de 2016 19:23