Bueno en ocacion a que he buscado muchas veces en google sobre este tema y nunca he encontrado solucion, me dedique a trabajar para encontrar una solucion y llegue a la conclusion mas simple del mundo:
Necesitamos dos formularios. Un MDI el cual lo dejamos sin ningun control (solo el formulario) y otro formulario (normal) en donde colocamos nuestros controles y procedimientos.
El el formulario MDI (
EL CUAL HE LLAMADO BG) colocamos el siguente codigo.
En los eventos Load y Resize
Código:
Private Sub bg_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.ShowInTaskbar = False
Aparecer()
MostrarFormulario()
End Sub
Private Sub bg_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
fullsceen()
End Sub
En el resto del codigo colocamos:
Código:
''' <summary>
''' Propiedad que sera validad para verificar que formulario sera cargado
''' </summary>
''' <remarks></remarks>
Dim _View As String
Public Property View() As String
Get
Return _View
End Get
Set(ByVal value As String)
_View = value
End Set
End Property
''' <summary>
''' Lee la informacion de la porpiedad view y valida que formulario sera cargado.
''' Este procedimiento se usa si el formulario de fondo sera usado para mas de un formulario.
''' </summary>
''' <remarks></remarks>
Private Sub MostrarFormulario()
Select Case View
Case 1
frmProductos_Precios.ShowInTaskbar = False
frmProductos_Precios.Show()
End Select
End Sub
''' <summary>
''' REDIMENCIONA EL FORMULARIO AL TAMANIO TOTAL DE LA PANTALLA Y POSTERIORMENTE LO COLOCA EN LA POSICION 0 X-Y
''' DE LA PANTALLA
''' </summary>
''' <remarks></remarks>
Private Sub fullsceen()
Me.Text = ""
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.Size = SystemInformation.PrimaryMonitorSize
Me.Left = 0
Me.Top = 0
End Sub
''' <summary>
''' PROCEDIMIENTO QUE LE DA UN EFECTO AL FORMULARIO DE APARICION
''' </summary>
''' <remarks></remarks>
Private Sub Aparecer()
Dim i As Double
For i = 0 To 0.5 Step 0.07
Threading.Thread.Sleep(100)
Me.Opacity = i
Me.Visible = True
Next i
End Sub
''' <summary>
''' PERMITE CENTRAR UN CONTROL EN EL FORMULARIO, PUEDE SER UN PANEL O UN GROUP BOX
''' </summary>
''' <param name="ctrl"></param>
''' <remarks></remarks>
Private Sub CentrarControl(ByVal ctrl As Control)
' Si el contenedor del control es Nothing, abandonamos el procedimiento
If ctrl.Parent Is Nothing Then Return
With ctrl
.Top = (.Parent.ClientSize.Height - .Height) \ 2
.Left = (.Parent.ClientSize.Width - .Width) \ 2
End With
End Sub
En el segundo formulario colocamos en el evento disposed el codigo
y en el evento load de este mismo formulario
esto nos servira para que al cerrar el formulario hijo se cierre el padre (el fondo transparente que enllava toda la pantalla.)
NOTA IMPORTANTE:
Estos formularios no los podemos llamar usando la propiedad MDI CHILD pues la idea es que cubran la pantalla completa y el fondo enllave la pantalla hasta que el formulario hijo se cierre.
Consultas al
[email protected]