2012-01-28 8 views
6

Leí en Windows Experience Guidelines: Error Messages que "OK" es un botón incorrecto para mostrar en un cuadro de diálogo de error.Mostrar cuadro de diálogo de error (MessageBox) con solo los botones "Cerrar" o "Cancelar"?

... proporcione un botón Cerrar. No use OK para los mensajes de error, porque esta redacción implica que los problemas son correctos.

Entonces, ¿cómo puedo mostrar un diálogo de error simple, con un solo Cerrar/Cancelar botón?

¿Es esto posible con la clase estándar MessageBox o debo recurrir a un diálogo personalizado (o biblioteca) u otro mensaje Win32/p-invoke "hacks"?

(No parece haber nada relevante en el MessageBoxButtons enumeración.)

Gracias.

+0

Si no hay nada en la enumeración 'MessageBoxButtons', esto podría deberse a que realmente no necesita nada más. Entiendo claramente tu punto sobre un botón [OK], pero todo depende del problema que hayas encontrado. ¿Qué más quieres que el usuario genere? Él no está de acuerdo y quiere hacer algo acerca de este error? No lo creo. Desde mi punto de vista, simplemente usaría el estándar 'MessageBox'; de lo contrario, tendrías que implementar el tuyo propio, lo cual no debería ser demasiado difícil. –

+0

@WillMarcouiller Pero uno * necesita * algo más, según la * oficial * documentación de diseño de Microsoft vinculada :-) Creo que está dirigido a Vista/Windows7, pero la pregunta sigue en pie como MessageBox (y el subyacente [MessageBox WinAPI] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505%28v=vs.85%29.aspx)) no proporciona esta opción: lo que simplemente significa que no se han "actualizado para el veces". (Y no tiene nada que ver con "en realidad no necesita nada más".) –

Respuesta

7

Desea la TaskDialog totalmente mejorada.

Available from here con description on usage here

TaskDialog le permite especificar con mayor detalle los botones e iconos que muestran y es la propia solución de Microsoft a su problema en .Net.

- Actualización de responder @ comentario de pst

Si tiene que apoyar Winows XP o anterior, entonces hay una very stable and reliable library on codeproject que envuelve y emula la clase TaskDialog Microsoft cuando se está utilizando una versión anterior de Windows, y los usos La propia versión de MS si está en Vista o más tarde.

He confiado en esta biblioteca de proyectos de código hace aproximadamente 2 años, y era estable entonces, por lo que no debería haber problemas de fiabilidad en absoluto.

+0

Buen hallazgo. Sin embargo, me pregunto qué pasaría si se ejecuta en Windows XP. (Hace que parezca que usa una API Vista/Windows7-only.) –

+0

Luego se cancelará automáticamente :) –

+0

Gracias por su entrada (y actualización). Ni siquiera me di cuenta de que Vista/7 introdujo una nueva API TaskDialog. ¿Conoce problemas de experiencia (o problemas de rendimiento) al usar estos diálogos WPF en una aplicación/host WinForms? –

Cuestiones relacionadas