En esta oportunidad quiero mostrarles un pequeño ejemplo en visual basic .net que me gustó mucho cuando lo hice por primera vez. No es algo que usemos todos los días pero estoy seguro que les gustará y ya encontrarán donde hacerlo. Particularmente me gusta usarlo cuando muestro el cuadro “Acerca de… ” en algunas de mis aplicaciones…
Se trata de la aparición gradual de un formulario, comienza transparente hasta que se ve al 100%. Para realizarlo necesitamos utilizar un control timer y la propiedad Opacity del formulario.
En el ejemplo lo que haremos será crear dos formularios (Form1 y Form2), el Form1 con un botón y la acción de este botón es llamar al segundo formulario. El segundo formulario irá apareciendo gradualmente y hará lo mismo cuando lo cerremos. Debería verse como en la imagen siguiente:

Bueno, manos a la obra, jaja.
Primero el evento click del botón para que cargué el segundo formulario:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim vForm2 As New Form2
vForm2.ShowDialog()
End Sub
En el segundo formulario insertaremos dos componentes Timer’s (Timer1 y Timer2). Luego copiamos el siguiente código:
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Opacity = 0
Timer1.Interval = 25
Timer1.Enabled = True
End Sub
Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Timer2.Interval = 25
Timer2.Enabled = True
If Me.Opacity > 0 Then
e.Cancel = True
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Me.Opacity = 1 Then
Timer1.Enabled = False
Else
Me.Opacity = Me.Opacity + 0.02
Me.Refresh()
End If
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
If Me.Opacity = 0 Then
Timer2.Enabled = False
Me.Close()
Else
Me.Opacity = Me.Opacity - 0.02
Me.Refresh()
End If
End Sub
Voy a explicar en breves palabras que es lo que hace:
Los formularios windows tienen una propiedad llamada Opacity que almacena un valor que va de 0 hasta 1. Este valor indica el porcentaje de opacidad del formulario, siendo 1 el 100% opaco y 0 0% opaco, lo que sería lo mismo que decir 100% transparente. Por eso con un valor 0.5 tendriamos un formulario 50% opaco o 50% Transparente (como más te guste).
Lo que hace un control Timer es ejecutar el código del evento Tick miestras el Timer tenga la propiedad enable en True y cada un intervalo determinado por la propiedad Interval.
Entonces tenemos el Timer1 para cuando se abre el formulario (por eso lo acrivo “Timer1.Enable = True” en el evento Load y Timer2 para cuando se cierra (Activado en el evento Closing del Formulario).
Bueno, no quiero abundar en explicaciones porque el código es breve y creo que no hay mucho más que aclarar.
Si te gustó este ejemplo deja un comentario. Me gustaría saber cuales son las preferencias de mis visitantes.
Información Bitacoras.com…
Valora en Bitacoras.com: En esta oportunidad quiero mostrarles un pequeño ejemplo que me gustó mucho cuando lo hice por primera vez. No es algo que usemos todos los días pero estoy seguro que les gustará y ya encontrarán donde hacerlo. Particularm…
Thank you!
gmn negc… bingung… mulai nya dr mana dulu..
klu buat kayak sidebar gmn?
ufff esta muy buno jaja me impreciono
gracias
Esta super fino men, pero si tienes nuevos temas si puedes mandame a mi correo e lo agradeceria mucho men…
Bunas tardes, no tendras algun ejemplo para hacer un control( ya sea label, button, frame) trasparente? gracias
gracias man esta bueno ese codigo eso es lo que estava buscando gracias man…..
MUCHAS GRACIAS ESTA MUY BIEN ESPLICADO
Gracias bro ac un time staba viendo esto; lo logre acr d otro modo pro no es lo q deseaba; ahora lo malo es q no logro acr q l efecto se realice cuando el form esta contenido en otro waaaaaaaaaaaa.
Gracias
esat bien ….
pero quisiera saber como hacer q se muestren imagenes ua tras otra pero que se desvanescan o se hagan transparentes con opacity….
ojala me ayudes grasias!!
Estoy buscando como hacer transparente, o modificar su opacidad, de un solo control, no del formulario. alguien sabe?.
No todos los controles tiene esa propiedad, deberías estudiar cada control en particular.
Muchas gracias esta muy bueno
muy bueno se agradece sigue subiendo mas informacion por favor …..esta muy interesante
Estupendo.
Estuve buscando en varios sitios explicanción sencilla para manejar los componentes de Visual Estudio. algunso son muy pobres, otros no son claros y otros asumen muchas cosas y lo complican.
Quiero felicitarte por tu Blog. Práctico, “sencillo” de explicar y muy útil.
Gracias me has ayudado un Montón.
Seguiré viendo tus ejemplos para terminar pronto un proyecto que tengo en mi casa.
Douglas Salcedo
Milagro – Ecuador
Muchas gracias por tu comentario, ese es el espíritu que impulsa este blog: no lo sabemos todo, pero cada artículo escrito trata de explicar lo mas sencillo y practico posible cada tema tratado.
Saludos
Eliseo
Good Job
por favor, estoy super atorada, necesito saber el codigo para recuperar el contenido de una celda en donde doy click en un datagridview en visual studio, te lo agradeceria muchisimo, espero tu respuesta,…gracias
Hola:
tiene que escribir código en el evento click de la celda y leer el valor de datagridview1.currentCell.value
o bien
datagridview1.currentrow.cell(n).value donde n es el index de la columna en cuestion
espero que te sirva
Private Sub GrdDatos_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles GrdDatos.MouseDoubleClick
If Convert.ToInt32(GrdDatos.CurrentRow.Index) <= Convert.ToInt32(GrdDatos.Rows.Count – 2) Then
txtOrdeninter.Text = GrdDatos.CurrentRow.Cells(0).Value.ToString()
End If
txtOrdeninter.Text = GrdDatos.CurrentRow.Cells(0).Value.ToString()
txtPartinter.Text = GrdDatos.CurrentRow.Cells(1).Value.ToString()
txtCant_ter1inter.Text = GrdDatos.CurrentRow.Cells(4).Value.ToString()
txtcantdisp.Text = GrdDatos.CurrentRow.Cells(5).Value.ToString()
txtCant_EnvioInter.Text = GrdDatos.CurrentRow.Cells(6).Value.ToString()
txtLotinter.Text = GrdDatos.CurrentRow.Cells(10).Value.ToString()
txtMedidaInter.Text = GrdDatos.CurrentRow.Cells(13).Value.ToString()
ActDesBotones(True)
If Convert.ToInt32(GrdDatos.CurrentRow.Cells(4).Value) = 0 Then
btnModificarInter.Enabled = False
End If
txtCant_EnvioInter.Focus()
End Sub
ESPERO TE SIRVA