4

我正在寻找标准 Windows YES/NO 或 YES/NO/CANCEL MessageBox 的合适替代品。

我经常看到这些标准对话框被误用,例如:“保存为纯文本回答 YES,或保存为 html 回答 NO”。显然,文本应为“另存为:”按钮应标记为“文本”和“HTML”。这不是一个是/否的问题,虽然它可以这样表达,但它不容易阅读和理解。

Microsoft 无法更改按钮上的文本。没有快速/简单的方法可以从头开始构建替换......正如使用上述尴尬风格的应用程序数量所证明的那样。

是否有任何免费的 C# 替换对话框或 MessageBox 至少可以让您:
- 指定按钮的数量
- 指定每个按钮上显示的文本


- 指定 我查看过但无法找到 的默认按钮。

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

4

4 回答 4

6

查看在 CodeProject 上剖析 MessageBox 。该项目有点过时,但它几乎正是您正在寻找的东西,更新它应该不需要太多时间。

于 2009-10-09T20:26:03.367 回答
3

根据您的目标平台,任务对话框可能是执行此操作的好方法。Windows API 代码包中有一个用于任务对话框的 .NET 包装器。但是,这些仅在 Windows Vista 及更高版本中提供,在 XP 或 2003 中不提供。

于 2009-10-09T20:33:47.780 回答
2

坦率地说,自己创建这样的 Messagebox 并不难,我们正在开发的当前应用程序中有这样的东西。

您需要的是用于自动对齐您创建的任何按钮的按钮的 FlowLayout。然后我们的 API 有类似 (params Tuple<string,DialogResult>[] 按钮)

Tuple 是一个包含两个值的辅助类。字符串是按钮的文本,Dialogresult 是我们的消息框在单击带有所述文本的按钮时返回的结果。

于 2009-10-09T20:33:59.980 回答
2

我同意弗兰克的观点。创建自己的通用表单来为您处理这个问题并不难。在不进入代码的情况下,表单应该执行以下操作

1)有一个属性来设置你想向用户显示的消息。

2)有一个添加按钮的方法,有2个参数,一个用于按钮文本,一个用于对话框结果

3) 当窗体显示时,它应该处于模态对话框模式,以便应用程序的其余部分处于非活动状态,直到单击其中一个选项。

因此,要创建另存为/不保存/取消,您将在第 2 步中添加 3 个按钮,所有按钮都带有相应的按钮文本和对话框结果。

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

于 2009-10-09T20:41:09.607 回答