2010-11-24 12 views

Respuesta

9
timer.Interval=5000; 
timer.Enabled=true; 
MessageBox.Show("Should close automatically"); 

Asociado con el siguiente fragmento Tick eventhandler del temporizador:

private void timer_Tick(object sender,EventArgs evt) { 
    timer.Enabled=false; 
    SendKeys.Send("{ESC}"); // SendWait as alternative 
} 
+0

+1; esto SÍ funciona como una solución alternativa. Mi respuesta fue específica para la clase 'MessageBox' =) – BeemerGuy

+1

Hay una serie de razones por las que esto es malo, más aún si es un cuadro de mensaje que se abrió en primer lugar y, por lo tanto, ya podría haberse cerrado. – Murph

2

No es posible con la clase MessageBox; tienes que crear tu propio formulario que lo imite y agregar esta característica tú mismo.

+0

Bueno, puedes hacer esto con los cuadros de mensaje de la API de Windows. Solo tiene que agarrar el asa de la ventana de los cuadros de mensaje y luego publicar un mensaje WM_CLOSE una vez que el temporizador se dispare. Asegúrese de anotar el evento del cierre de la ventana y abandonar el temporizador en esa eventualidad. Solo necesitarías un poco de P/Invoke. Pero una mejor solución es no usar un cuadro de diálogo según mi respuesta a esta pregunta. –

+0

Probablemente debería haberlo redactado como "' MessageBox' no tiene esa característica; necesita una solución alternativa ". – BeemerGuy

0

Un cuadro de mensaje es la solución incorrecta. Necesitas una ventana de sugerencia.

+0

¿Qué es una "ventana de sugerencia"? Si algo en formularios en Windows es nuevo para mí, si es algo que creas, es una respuesta demasiado delgada. – Murph

+0

¿Es una respuesta demasiado delgada si tiene que hacer algún trabajo? Estoy pensando en el tipo de mensajes que muestra Windows cuando las actualizaciones se han actualizado. Podrías mostrar fácilmente una ventana sin cromo y simplemente matarla después de 5 s, pero debe haber algún componente de sistema estándar. –

0

Si esto es en una página web, puede utilizar javascript o jQuery para un efecto bastante agradable. Esto se conoce como "fade" animation. Utiliza un temporizador.

Con este enfoque, no usaría una alerta real o MessageBox. Utiliza un <div> o algún otro elemento HTML con nombre.

Puede encontrar el código here para lo que está haciendo usando javascript.

O si está utilizando jQuery, busque fadeOut. Aquí hay uno article.

Cuestiones relacionadas