【问题标题】:Display error dialog (MessageBox) with Only "Close" or "Cancel" buttons?仅显示“关闭”或“取消”按钮的错误对话框(消息框)?
【发布时间】:2012-02-20 22:36:44
【问题描述】:

我在Windows Experience Guidelines: Error Messages 中读到,“确定”是错误对话框上显示的错误按钮。

...提供关闭按钮。 不要将 OK 用于错误消息,因为这种措辞暗示问题是可以的。

那么,如何使用单个关闭/取消按钮显示一个简单的错误对话框?

这对于标准MessageBox 类是否可行,或者我必须求助于自定义对话框(或库)或其他 Win32 消息/p-invoke“hacks”吗?

MessageBoxButtons 枚举中似乎没有任何相关内容。)

谢谢。

【问题讨论】:

  • 如果MessageBoxButtons 枚举中没有任何内容,这可能是因为您真的不需要其他任何内容。我清楚地理解您关于 [OK] 按钮的观点,但这完全取决于您遇到的问题。您还希望用户回答什么?他不同意并想对这个错误做点什么?我不这么认为。在我看来,我会简单地使用标准MessageBox,否则你必须自己实现,这应该不会太难。
  • @WillMarcouiller 但是一个确实需要别的东西,根据链接的官方微软设计文档:-)我相信它是针对Vista/ Windows7,但问题仍然存在,因为 MessageBox(以及底层的MessageBox WinAPI)没有提供这个选项:这仅仅意味着它们没有“与时俱进”。 (并且与“你真的不需要其他任何东西”无关。)

标签: .net windows winforms dialog design-guidelines


【解决方案1】:

您想要全面改进的TaskDialog

Available from heredescription on usage here

TaskDialog 允许您更详细地指定所显示的按钮和图标,并且是微软自己的解决方案来解决您在 .Net 中的问题。

-- 更新以回答@pst 的评论

如果您必须支持 Winows XP 或更早版本,则有一个 very stable and reliable library on codeproject 在您使用早期版本的 Windows 时包装和模拟 microsoft taskdialog 类,如果您在 Vista 或更高版本上使用 MS 自己的版本。

大约 2 年前我就依赖过这个 codeproject 库,当时它很稳定,所以根本不存在可靠性问题。

【讨论】:

  • 不错的发现。不过,我想知道如果在 Windows XP 上运行会发生什么? (这听起来像是使用了仅适用于 Vista/Windows7 的 API。)
  • 那么它会自动被取消:)
  • 感谢您的意见(和更新)。我什至没有意识到 Vista/7 引入了一个新的 TaskDialog API。在 WinForms 应用程序/主机中使用这些 WPF 对话框时,您是否知道或遇到过问题(或性能问题)?
  • 我完全没有遇到任何问题。 TaskDialog 类非常简洁,允许您(例如)使用自定义图标、自定义按钮,甚至更有趣的东西,如单选按钮。这一切都顺利地挂在一起。我注意到的唯一问题是,如果您选择其中一个默认图标,它会假定您想要一些其他行为-我认为这是默认声音-(因此选择错误图标可能会播放 Windows 默认错误噪音)-但是您可以通过提供您自己的自定义图标(可能看起来相同)来解决此问题。
  • @perfectist 谢谢。我会试一试!
猜你喜欢
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
相关资源
最近更新 更多