Abrir y Cerrar Formularios

25/05/2006 - 04:59 por Sergio | Informe spam
Estimados amigos, tengo la siguiente duda:

Tengo 2 formularios, uno principal que contiene un ABM y otro que contiene
una Consulta
del ABM.
En el formulario del ABM tengo un menu con la opcion SALIR ok?
Desde el formulario ABM llamo al formulario Consulta ok?.

Ahora bien la duda es la siguiente:

En el evento del menu SALIR puse Application.Exit()
En el formulario del ABM que es el principal en el evento Closing tambien
puse Application.Exit()
Llamo al formulario Consultar con frmConsultar.Show()
Estando en el formulario Consultar lo cierro con ME.Close()

Es correcto lo que use? o debo utilizar otro metodos?
Cuando aplico Appication.Exit() se cierra la aplicacion sacando los
formularios de memoria o queda
algo?

Les pregunto esto porque recien estoy aprendiendo y veo que hay metodos
Closing, Dispose, Hite
Activated, y no se cual es el mas conveniente.

Gracias

Preguntas similare

Leer las respuestas

#1 Luis Miguel Blanco
25/05/2006 - 08:57 | Informe spam
Hola Sergio

Cuando utilizas Application.Exit(), lo que ocurre en efecto es que se
cierran todas las ventanas de tu aplicación; termina de procesar los mensajes
que hubiera pendientes, pero tiene el inconveniente de que no se ejecutan los
eventos Closed() ni Closing() de los formularios, por lo que si tienes código
para realizar alguna operación en los mismos, no sería ejecutado.

Para cerrar un formulario, y en condiciones normales creo que lo mejor es
usar el método Close() del formulario, ya que este hacer que se ejecuten los
eventos adecuados en el proceso de cierre del mismo, en los cuales puedes
incluir tu propio código para realizar comprobaciones y validaciones varias,
previas al cierre.

Por otra parte los métodos y eventos que comentas al final de tu mensaje se
utilizan en función de lo que necesites en cada momento, no es obligatorio
codificarlos todos, sólo si necesitas controlar determinados sucesos que le
puedan ocurrir al formulario, o ejecutar determinada funcionalidad del mismo:

-Closing(): se ejecuta cuando al formulario se le ha dado orden de cierre, y
está a punto de cerrarse, pero todavía hay posibilidad de cancelar dicho
cierre. Es el método adecuado para preguntar al usuario si realmente quiere
cerrar la ventana.

-Activated(): se ejecuta cuando el formulario pasa a estar activo,
recibiendo el foco de entrada del teclado para que el usuario trabaje con él.
Aquí puedes poner código para configurar controles cuando el formulario
reciba el foco.

-Dispose(): es el método que se utiliza para liberar los recursos que pueda
estar utilizando el formulario y que sea conveniente que se utilicen el menos
tiempo posible porque puedan sobrecargar el sistema, por ejemplo,
manipuladores de ficheros abierto en modo exclusivo por el formulario para
leer/escribir información en ficheros.

-Hide(): te permite ocultar el formulario, teniendo en cuenta que no lo
destruyes, simplemente lo ocultas al usuario.

Bien, pues esto es todo, espero que esta información te sea de ayuda.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Sergio" wrote:

Estimados amigos, tengo la siguiente duda:

Tengo 2 formularios, uno principal que contiene un ABM y otro que contiene
una Consulta
del ABM.
En el formulario del ABM tengo un menu con la opcion SALIR ok?
Desde el formulario ABM llamo al formulario Consulta ok?.

Ahora bien la duda es la siguiente:

En el evento del menu SALIR puse Application.Exit()
En el formulario del ABM que es el principal en el evento Closing tambien
puse Application.Exit()
Llamo al formulario Consultar con frmConsultar.Show()
Estando en el formulario Consultar lo cierro con ME.Close()

Es correcto lo que use? o debo utilizar otro metodos?
Cuando aplico Appication.Exit() se cierra la aplicacion sacando los
formularios de memoria o queda
algo?

Les pregunto esto porque recien estoy aprendiendo y veo que hay metodos
Closing, Dispose, Hite
Activated, y no se cual es el mas conveniente.

Gracias
Respuesta Responder a este mensaje
#2 Sergio
25/05/2006 - 09:27 | Informe spam
Clarisimo Luis, solo que me surge pensar esto, en mi aplicacion en mi
formulario principal tengo 3 caminos para salir de la aplicacion, es decir
desde el MENU, desde el boton X y desde un boton que coloque ok?
Ahora bien, supongamos que estan abiertos otros formularios y quiero salir
de la aplicacion, que seria conveniente usar????? es decir, en los todos los
formularios tengo algo en el evento CLOSING, si cierro mi aplicacion con
Application.Exit() el contendio de Closing no se ejectura como me comentas,
entonces cual sera la manera correcta de salir por completo de la aplicacion
si estan corriendo otros formularios que cuentan con codigo en el evento
closing?.
Este pequeño codigo es el del boton que coloque en el boton de mi formulario
principal para salir, realmente no se como hacer para saber si hay
formularios abiertos y que se cierren todos antes de ejecutar
Applicaction.Exit().
Si podes darme una mano con esto te agradeceria mucho.

Private Sub Botoncerrar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Botoncerrar.Click

Dim respuestaCerrar As Integer
respuestaCerrar = MsgBox("¿Esta seguro de salir de la Aplicacion?.
", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Sueldos")

If respuestaCerrar = vbYes Then ' Presiono YES

Me.Close()

' aca deberia controlar si hay algun formulario abierto...

'--

Application.Exit()
End If
End Sub
Respuesta Responder a este mensaje
#3 Luis Miguel Blanco
25/05/2006 - 15:16 | Informe spam
Hola Sergio

Lo más adecuado sería que usaras en el formulario principal de tu aplicación
la instrucción Me.Close(), ya que esta se encarga además de hacer un cierre
ordenado de los formularios hijos que puedas tener abiertos, sin necesidad de
que tengas que estar preocupándote de cuáles hay abiertos para ejecutar
código de finalización de los mismos.

Esto es algo que puedes comprobar muy fácilmente. Si tienes por ejemplo un
par de formularios hijos del principal, pon un punto de parada del depurador
en una línea del evento Closing() de cada uno de ellos, ejecuta Me.Close() en
el formulario principal y comprobarás cómo se van cierrando los formularios
hijos, pasando previamente por el evento Closing(), y finalmente se cerrará
el principal, pasando también por su respectivo Closing() si es que tienes
algo escrito en él. No sería necesario por tanto que llames a
Application.Exit().

Espero haber aclarado un poquito más tus dudas 8-)
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Sergio" wrote:

Clarisimo Luis, solo que me surge pensar esto, en mi aplicacion en mi
formulario principal tengo 3 caminos para salir de la aplicacion, es decir
desde el MENU, desde el boton X y desde un boton que coloque ok?
Ahora bien, supongamos que estan abiertos otros formularios y quiero salir
de la aplicacion, que seria conveniente usar????? es decir, en los todos los
formularios tengo algo en el evento CLOSING, si cierro mi aplicacion con
Application.Exit() el contendio de Closing no se ejectura como me comentas,
entonces cual sera la manera correcta de salir por completo de la aplicacion
si estan corriendo otros formularios que cuentan con codigo en el evento
closing?.
Este pequeño codigo es el del boton que coloque en el boton de mi formulario
principal para salir, realmente no se como hacer para saber si hay
formularios abiertos y que se cierren todos antes de ejecutar
Applicaction.Exit().
Si podes darme una mano con esto te agradeceria mucho.

Private Sub Botoncerrar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Botoncerrar.Click

Dim respuestaCerrar As Integer
respuestaCerrar = MsgBox("¿Esta seguro de salir de la Aplicacion?.
", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Sueldos")

If respuestaCerrar = vbYes Then ' Presiono YES

Me.Close()

' aca deberia controlar si hay algun formulario abierto...

'--

Application.Exit()
End If
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida