Cerrar Form.ShowDialog()

Iniciado por Fixxed, 20 Diciembre 2015, 18:39 PM

0 Miembros y 1 Visitante están viendo este tema.

Fixxed

Hola, en mi aplicación quiero dar un pequeño showdialog (Sin botones, un simple cartel). El problema es que uso esto:

Código (csharp) [Seleccionar]
Form4 frm = new Form4();
frm.ShowDialog(this);


Pero no puedo lograrlo cerrar, probe con:
Código (csharp) [Seleccionar]

frm.Close();


y

Código (csharp) [Seleccionar]
frm.Dispose();

Me podrían ayudar?

Eleкtro

#1
El problema está en la forma en la que estás percibiendo las cosas.

Cuando llamas a la función ShowDialog, el flujo de control pasa a ese diálogo y el form propietario queda en inactividad hasta que se devuelva una respuesta por parte del diálogo que mostraste.

O dicho de otra forma, un diálogo exige al usuario completar y cerrar manualmente dicho dialogo, ya sea pulsando el botón de cerrar "X" o pulsando algún botón que lo haga cerrarse
, antes de poder continuar con la ejecución de la ventana propietaria.

En el código que has mostrado, esto que he explicado se resume en algo tan simple como que...:

Código (csharp,3) [Seleccionar]
Form4 frm = new Form4();
frm.ShowDialog(this);
frm.Dispose();


...la orden frm.Dispose() nunca se va a procesar hasta que el diálogo no se haya cerrado (o dicho de otra forma, hasta que devuelvas un resultado de diálogo), ya que la función frm.ShowDialog() es bloqueante.

Te sugiero que añadas un Timer en la Class del Form del diálogo para cerrarlo de forma automatizada pasado un intervalo de tiempo que tu creas conveniente para terminar de mostrar la imagen. ¿lo entendiste?.

Saludos!








mOrfiUs0

Hola a todos!!
En el código que acabo de publicar, tienes un ejemplo de como usar la función using con un formulario.
Se crea un input box, que se descarga de forma automática.
Saludos!!
If you need a custom development, please contact via email.
apifilmaffinityimdb[[at]]g m ail.com

DarK_FirefoX

Cita de: Fixxed en 20 Diciembre 2015, 18:39 PM
Hola, en mi aplicación quiero dar un pequeño showdialog (Sin botones, un simple cartel). El problema es que uso esto:

Código (csharp) [Seleccionar]
Form4 frm = new Form4();
frm.ShowDialog(this);


Puedes hacer caso a lo que te dice @Eleкtro.

Cita de: Eleкtro en 20 Diciembre 2015, 18:57 PM
El problema está en la forma en la que estás percibiendo las cosas.

Cuando llamas a la función ShowDialog, el flujo de control pasa a ese diálogo y el form propietario queda en inactividad hasta que se devuelva una respuesta por parte del diálogo que mostraste.

O dicho de otra forma, un diálogo exige al usuario completar y cerrar manualmente dicho dialogo, ya sea pulsando el botón de cerrar "X" o pulsando algún botón que lo haga cerrarse
, antes de poder continuar con la ejecución de la ventana propietaria.

Ahora pregunto, tienes que utilizar esta forma obligada para mostrar un "mensaje". Porque una manera mas sencilla es utilizar un MessageBox

Ejemplo:

Código (csharp) [Seleccionar]
MessageBox.Show("Tu mensaje");

Te recomiendo ir a la MSDN para entender mejor como funciona y ver que otras opciones tiene.

Salu2s