在MessageBox / DialogBox上添加单选按钮

时间:2016-06-08 13:52:19

标签: .net vb.net winforms messagebox

是否可以在msgbox /对话框消息上添加单选按钮,而无需创建如下表单:

MessageBox.Show("Select Option", "Test", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

我想要实现的是,使用是/否按钮我可以在消息的上半部分添加一个单选按钮,而无需创建新的winform / userform。

如果这是可以实现的,请告诉我,如果是这样,请给我任何可能有助于实现这些内容的好参考。

1 个答案:

答案 0 :(得分:5)

正如所建议的那样,简单的解决方案是创建自己的表单并使用ShowModal方法显示它。它可以像MessageBox一样工作,但你可以对它进行任何控制。

您似乎对此并不满意。实际上,有一种方法可以使用消息框执行此操作,但方式太复杂了。它涉及安装一个钩子,它将在显示消息框时触发,然后编写一堆代码,动态添加控件并操纵消息框的布局。必须使用一堆P / Invoke来完成,因为消息框是本机Win32对话框,而不是Windows窗体。包装类没有任何帮助。真的不值得。消息框的设计不是可扩展的。

请考虑使用Task Dialog。这几乎就是他们的设计目标。您可以使用一系列命令按钮来描述可用的选项,而不是单选按钮。这是一个更好的用户界面,因为只需要单击一下就可以做出选择,而不是两次。它看起来像这样:

“你想保存你的工作吗?”被称为主要指令,应该保持很短。然后在它下面有一条补充说明,如果用户想要阅读它,它会提供更多细节。最后,您将获得一系列命令链接,其中包含用户单击它们时将发生的情况的简要详细说明。在这种情况下,“保存工作”和“不保存”。

(这个例子是对任务对话框的愚蠢使用。你应该只使用普通的旧按钮来保存/不保存。但这是我在Google图像上找到的最好的例子。)

如果需要,您实际上可以将单选按钮放入任务对话框:

事实上,正如该图像所示,您可以将任何您想要的任何内容放入任务对话框中。它非常可定制。这是它在古老的MessageBox API上提供的重大改进。

任务对话框API有一个.NET包装器here