替代yes/no/cancel MessageBox的方法(C#)

4

我正在寻找一个体面的替代标准Windows YES/NO或YES/NO/CANCEL MessageBox。

我经常看到这些标准对话框被错误使用,比如:“要保存为纯文本,请选择YES,要保存为HTML请选择NO”。显然,文本应该写成“保存为:”,按钮应该标记为“文本”和“HTML”。 这不是一个需要回答是/否的问题,尽管可以这样表述,但很难阅读和理解。

微软没有提供更改按钮文本的方法。 从零开始构建替代品没有快速/简单的方法...正如使用上述笨拙风格的应用程序数量所证明的那样。

是否有任何免费的C#替代对话框或MessageBox,让您至少能够:
- 指定按钮数量
- 指定每个按钮上要显示的文本
- 指定默认按钮

我已经查找过并且无法找到一个合适的。

(我可以自己构建一个,但我对完全功能控件应该具有的所有行为不是很熟悉,因为我只需要/使用/知道其中的一小部分。 我不使用的两个示例是主题和国际化。 我需要一些我的同事也想使用的东西。)


当然,正确的方式是询问正确的问题:“您是否想将文档保存为纯文本?” - EFraim
3
如果你回答“不”,这是否意味着它被加密保存?不,需要更多的文本来清楚地解释它作为一个是/否问题。 - Mark T
4个回答

6

请查看CodeProject上的解析MessageBox。该项目有点过时,但基本上是您需要的内容,更新不会花费太多时间。


这确实看起来不错。它包含了我的同事可能需要或喜欢的一些“额外功能”。而且由于它是源代码,甚至可以进行定制和扩展。谢谢。 - Mark T

3
根据您的目标平台,任务对话框可能是一个很好的解决方案。在Windows API Code Pack中,有一个 .NET 封装器用于任务对话框。但这只适用于 Windows Vista及以上系统,不适用于 XP 或 2003 系统。

谢谢,但我们现在绝对需要支持XP。但这个回答可能会帮到其他人! - Mark T

2
坦白说,自己创建这样的消息框并不难,我们正在开发的应用程序中就有这样的功能。
你需要的是一个FlowLayout来自动对齐你创建的任何按钮。我们的API有一个类似于(params Tuple[] buttons)的东西。
Tuple是一个帮助类,包含两个值。字符串是按钮的文本,Dialogresult是当单击具有该文本的按钮时我们的消息框返回的结果。

2

我同意Frank的观点。创建一个通用表单来处理这个问题并不太难。不涉及代码,表单应该执行以下操作:

1)具有设置要向用户显示的消息的属性。

2)具有添加按钮的方法,其中包括两个参数,一个用于按钮文本,另一个用于对话框结果。

3)当表单显示时,它应该处于模态对话框模式,以使应用程序的其余部分在单击其中一个选项之前处于非活动状态。

因此,要创建“另存为/不保存/取消”选项,您需要在第2步中添加3个按钮,所有按钮都具有适当的按钮文本和对话框结果。

使用流布局,您应该能够正确显示它,无论消息的大小或按钮的数量如何。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接