Cerrar Formularios

24/04/2009 - 23:02 por RP | Informe spam
Hola que tal, bueno escribo la siguiente porque me esta mareando esto de
trabajar con formularios en C#, lo que pasa es lo siguiente, tengo mi
formulario de Login, que al aceptar la validación, obviamente, tiene que
pasar a mi formulario principal, el detalle es que no puedo cerrar el
formulario de Login, lo único que puedo hacer es ocultarlo, pero aún sigue
ahi, ahora bien, cuando quiero cerrar todo el programa que estoy
desarrollando, no lo hace, tengo que detener par que pueda salir como
soluciono estas dos cosas.

Si me valida el código, ingreso el siguiente código:
fPrincipal ofPrincipal = new fPrincipal();
ofPrincipal.Show();
this.Hide();

Con esto me abre el principal, pero el Formulario de Login, aún sigue ahí,
oculto pero sigue, no hay forma de cerrarlo, una vez aceptado el Login??

Preguntas similare

Leer las respuestas

#1 RFOG
25/04/2009 - 11:41 | Informe spam
Yo eso siempre lo he resuelto de dos formas (en C++Builder pero supongo
que aquí será igual).

La más fácil es que abras desde main() el form de login y hagas todo el
proceso necesario. Cuando se cierre el form de login miras su valor de
retorno o lo que quieras y si es correcto entonces creas el principal.
Algo así:

bla bla static main()
{
fLogin=new FLogin();
fLogin.Show();
bool Ok=fLogin.IsOk;
delete fLogin;
if(Ok)
{
//ficha pral
}
else
//Piratón
}

La otra forma es algo más complicada. Te creas el form principal y lo
abres. Luego, yo lo hago en un timer exclusivo para eso, tu lo puedes
hacer como quieras, muestro el form de login como modal y si se loguean
entonces cargo las variables o lo que tenga que cargar. Es más difícil
porque el form principal tiene que saber cuando el login es correcto y
cuando no, y todos los métodos han de comprobar dicha condición.

A no ser que se te permita crear, mostrar modal y destruir otro form en el
constructor de la ficha principal, que creo que no.

On Fri, 24 Apr 2009 23:02:01 +0200, RP
wrote:

Hola que tal, bueno escribo la siguiente porque me esta mareando esto de
trabajar con formularios en C#, lo que pasa es lo siguiente, tengo mi
formulario de Login, que al aceptar la validación, obviamente, tiene que
pasar a mi formulario principal, el detalle es que no puedo cerrar el
formulario de Login, lo único que puedo hacer es ocultarlo, pero aún
sigue
ahi, ahora bien, cuando quiero cerrar todo el programa que estoy
desarrollando, no lo hace, tengo que detener par que pueda salir como
soluciono estas dos cosas.

Si me valida el código, ingreso el siguiente código:
fPrincipal ofPrincipal = new fPrincipal();
ofPrincipal.Show();
this.Hide();

Con esto me abre el principal, pero el Formulario de Login, aún sigue
ahí,
oculto pero sigue, no hay forma de cerrarlo, una vez aceptado el Login??





Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y desarrollo
La violencia en la voz no es a menudo más que el estertor agónico de la
razón en la garganta.
Respuesta Responder a este mensaje
#2 SoftJaén
25/04/2009 - 12:11 | Informe spam
Hola:

Eso te sucede porque el formulario inicial de tu aplicación es el formulario
Login, y hasta que éste no lo cierres expresamente, seguirá vivito y
coleando. :-)

Lo normal en estos casos es que iniciaras tu aplicación con el formulario
Principal, y en su evento Load llamarías al formulario Login:

private void fPrincipal_Load(object sender, EventArgs e)
{
Form frmLogin = new frmLogin();

DialogResult dlg = frmLogin.ShowDialog();

if (dlg != DialogResult.OK) {
this.Close();
}
}

Por supuesto, el formulario Login deberá devolver un valor «DialogResult»,
que de ser diferente al valor «DialogResult.OK», hará que se cierre el
formulario Principal, y en consecuencia, la aplicación.

Un saludo

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.
Respuesta Responder a este mensaje
#3 SoftJaén
25/04/2009 - 12:25 | Informe spam
No obstante, si deseas que el formulario Login continúe siendo el formulario
de inicio de tu aplicación, edita el procedimiento «Main» del archivo
Program.cs para que se quede de la siguiente manera:

/// <summary>
/// Punto de entrada principal para la aplicación.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

// Llamamos al formulario Login
Form frmLogin = new frmLogin();

DialogResult dlg = frmLogin.ShowDialog();
if (dlg == DialogResult.OK)
{
Application.Run(new fPrincipal());
}

}

También es necesario que el formulario Login devuelva un valor
«DialogResult», que de ser DialogResult.OK hará que se muestre el formulario
Principal.

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.
Respuesta Responder a este mensaje
#4 Alberto Poblacion
25/04/2009 - 20:09 | Informe spam
"RFOG" wrote in message news:
bla bla static main()
{
fLogin=new FLogin();
fLogin.Show();
bool Ok=fLogin.IsOk;
delete fLogin;



Una observación: para hacer esto, en lugar de fLogin.Show() hace falta
usar fLogin.ShowDialog(). El "Show" muestra el formulario en forma
"no-modal", y no se detiene, sino que sigue ejecutando las líneas que hay
debajo, con lo que el formulario se cierra inmediatamente al llegar al
"delete". Por cierto, en .Net lo que necesitas no es "delete fLogin" sino
"fLogin.Dispose()".
Respuesta Responder a este mensaje
#5 RFOG
25/04/2009 - 20:19 | Informe spam
:-P

Cierto, cierto. Cada vez uso menos el C# y se me van olvidando cosas...

On Sat, 25 Apr 2009 20:09:06 +0200, Alberto Poblacion
wrote:

"RFOG" wrote in message news:
bla bla static main()
{
fLogin=new FLogin();
fLogin.Show();
bool Ok=fLogin.IsOk;
delete fLogin;



Una observación: para hacer esto, en lugar de fLogin.Show() hace
falta usar fLogin.ShowDialog(). El "Show" muestra el formulario en forma
"no-modal", y no se detiene, sino que sigue ejecutando las líneas que
hay debajo, con lo que el formulario se cierra inmediatamente al llegar
al "delete". Por cierto, en .Net lo que necesitas no es "delete fLogin"
sino "fLogin.Dispose()".






Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y desarrollo
La violencia en la voz no es a menudo más que el estertor agónico de la
razón en la garganta.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida