Si en tu proyecto tienes diseñado un formulario que hace de pantalla de
presentación (SplashScreen), y deseas que cuando se cierre éste se abra otro
formulario cualquiera, por ejemplo, un formulario llamado Form1, lo que
tienes que hacer es que éste último formulario sea el formulario de inicio
de la aplicación, y como formulario de pantalla de presentación, especificar
el formulario SplashScreen.
Para ello, abre las propiedades del proyecto (menú Proyecto --> Propiedades
de NombreProyecto ...), y en la hoja «Aplicación» selecciona el cuadro
combinado «Formulario de inicio»: ahí deberás de seleccionar el formulario
Form1.
Posteriormente, en el cuadro combinado «Pantalla de presentación» deberás
seleccionar el formulario que va a actuar de pantalla de presentación, por
ejemplo, SplashScreen1.
Si observas que el formulario de presentación se cierra demasiado pronto,
puedes demorar su cierre ejecutando en su evento «Shown» el código
siguiente:
Private Sub SplashScreen1_Shown( ... )
' Actualizamos el formulario de presentación.
'
Me.Refresh()
' Le indicamos que espere 5 segundos para cerrarse.
'
System.Threading.Thread.Sleep(5000)
End Sub
--
Enrique Martínez
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
He realizado tus indicaciones en mi proyecto, pero en mi caso el
SplashScreen no se cierra, se queda detras de mi form de Login al sistema.
En Propiedades del proyecto:
«Formulario de inicio» = frmPrincipal
«Pantalla de presentación»= frmSplashScreen
En el evento Shown de frmSplashScren he probado con tu codigo y sin el.
En el evento Load de frmPricipal tengo:
Private Sub frmPrincipal_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Llamando al formulario de validacion del usuario
Dim login As New frmLogin
Dim result As DialogResult = login.ShowDialog
sUsuario = login.sUsuario
If (result <> Windows.Forms.DialogResult.OK) Then
Me.Close()
Else
'El usuario es valido, continua la generacion de los menus del
sistema
.......
End If
End Sub
El formulario Splash se cierra justo cuando se cierra el formulario de
validacion del usuario (frmLogin). Como podria hacer para que el Splas se
cierre antes de que se cargue el frmLogin?
Alan
> He realizado tus indicaciones en mi proyecto, pero en mi caso el
> SplashScreen no se cierra, se queda detras de mi form de Login
> al sistema.
>
> El formulario Splash se cierra justo cuando se cierra el formulario de
> validacion del usuario (frmLogin). Como podria hacer para que el Splas se
> cierre antes de que se cargue el frmLogin?
Si el problema está en que el formulario SplashScreen se muestra detrás del
formulario Login, y se cierra cuando cierras éste último formulario, es
porque has llamado al formulario Login en el evento «Load» del formulario
Principal, por tanto, se tendrá que mostrar el formulario Login. Lo extraño
sería que no se mostrase, habiéndolo llamado expresamente. :-)
Si en las propiedades de tu proyecto de Visual Basic has especificado un
formulario que actuará de «Pantalla de presentación», procura no escribir
ningún código en el evento «Load» del formulario de inicio, en tu caso, en
el evento «Load» del formulario llamado «frmPrincipal»; si tienes que llamar
al formulario «Login», hazlo en su evento «Shown», el cual se desencadenará
una vez cargado el formulario «frmPrincipal», es decir, cuando se haya
ejecutado el evento «Load»:
Private Sub frmPrincipal_Shown( .... )
' Llamando al formulario de validacion del usuario
Dim login As New frmLogin
Dim result As DialogResult = login.ShowDialog
End Sub
Gracias Enrique por tus aclaraciones.
Alan
> Si hubiera la posibilidad de que el frmPrincipal se mostrara una
> vez que se haya cerrado el frmLogin, quedaria mejor.
Especifica entonces como formulario de inicio de la aplicación, el
formulario «frmLogin». Si en éste último formulario tienes un botón
«Aceptar», donde se verifica las credenciales del usuario, una vez que éstas
sean correctas, primero mostrarías el formulario «frmPrincipal» y después
cerrarías el formulario «frmLogin»:
Private Sub ButtonAceptar_Click( ... )
' Si la validación del usuario ha sido correcta.
'
If validationUser Then
' Mostramos el formulario principal.
'
Dim frm As frmPrincipal = New frmPrincipal
frm.Show ()
End If
' Cerramos el formulario frmLogin
'
Me.Close()
End Sub
Se comprende que si las credenciales del usuario no se han podido verificar,
o si se cancela el formulario «frmLogin», la aplicación finalizará sin más:
Private Sub ButtonCancelar_Click ( ... )
' Se ha cancelado el formulario frmLogin: la aplicación finalizará.
'
Me.Close()
End Sub
Como formulario de inicio de la aplicación, siempre puedes especificar el
formulario que creas conveniente.
Es debido ha eso que usé este código:
Private Sub frmPrincipal_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Llamando al formulario de validación del usuario
Dim login As New frmLogin
Dim result As DialogResult = login.ShowDialog
sUsuario = login.sUsuario
If (result <> Windows.Forms.DialogResult.OK) Then
Me.Close()
Else
'El usuario es valido, continua generacion de menus
.......
End If
End Sub
Alan
"SoftJaén" <grupo_n...@softjaen.es> escribió en el mensaje
news:%23FKVV5g...@TK2MSFTNGP05.phx.gbl...
> Cuando hago click en el botón Aceptar, se muestra por unos breves
> instantes el frmPrincipal luego se cierra toda la aplicación.
¡Coño! Si es que se me ha olvidado decirte lo más importante. :-(
Para que se pueda mostrar el formulario «frmPrincipal», a pesar de haberse
cerrado el formulario de inicio de la aplicación (frmLogin), en las
propiedades del proyecto, pestaña «Aplicación», deberás de especificar como
«Modo de apagado», el valor «Al cerrar el último formulario», que creo que
es un valor que se describe a sí mismo.
Una vez cerrados los formularios SplashScreen y Login, en principio, el
único formulario que quedará visible es el formulario principal, y desde
éste llamarás a otros formularios de tu aplicación, por tanto, se entiende
que el formulario principal será el último formulario que se cierre.
NOTA: cuando modifiques el valor «Modo de apagado», tienes que GUARDAR los
cambios efectuados para que surta efecto; es decir, que tienes que pulsar el
famoso icono de «Guardar todo».
Si estás utilizando una versión anterior de Visual Basic .net, tienes que
habilitar un procedimiento «Sub Main», el cual deberá ser el objeto inicial
de la aplicación, y desde éste procedimiento habilitar las oportunas
llamadas a otros formularios de la aplicación.
Pero, ¡bueno! Vamos a pensar que estás utiliando Visual Basic 2005 ó 2008.
:-)
Utilizo VB.Net 2008 con SQL 2000 Server.
Con la ultima indicación funciona al 100%; esta forma era como lo tenia
pensado desde un principio para el desarrollo de mi sistema.
¡¡¡ Gracias !!!
Alan
Lima-Perú