.net - 在消息框/对话框上添加单选按钮

标签 .net vb.net winforms messagebox

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

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

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

让我知道这是否可以实现,如果可以,请给我任何可能有助于实现这些目标的良好引用。

最佳答案

正如建议的那样,简单的解决方案是创建您自己的表单并使用 ShowModal 显示它。方法。它就像 MessageBox 一样工作,但您可以在其上放置任何您想要的控件。

你似乎对此并不满意。事实上,有一种方法可以用消息框来做到这一点,但它太复杂了。它包括安装一个在消息框显示时触发的钩子(Hook),然后编写一堆代码来动态添加控件并操纵消息框的布局。这必须通过一堆 P/Invoke 来完成,因为消息框是 native Win32 对话框,而不是 Windows 窗体。包装类不会有任何帮助。真的不值得。消息框不是为可扩展而设计的。

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



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

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

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



事实上,正如该图所示,您几乎可以在任务对话框中添加任何您想要的东西——太多了。它是非常可定制的。这是它对古老的 MessageBox API 的重大改进。

有可用的任务对话框 API 的 .NET 包装器here .

关于.net - 在消息框/对话框上添加单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37704496/

相关文章:

c# - 如何确定对象中的属性是否已更改

c# - Richtextbox 行数

asp.net-mvc - 将 Silverlight 应用程序转换为 HTML?请提出建议

c# - 测试结果中未复制所有程序集 - MS 测试

c# - 带有 WebApi 和业务层的 Autofac

.net - 何时重写 OnEventMethod 与处理实际事件

vb.net - 如何在 VB 中执行此 C# 操作?

vb.net - 如果不是 String.Empty 忽略空字符串 - VB.NET

c# - 重新设计 Windows 窗体应用程序中的标准工具栏的样式(仅限 C#)

c# - 有没有办法在异步方法中使用 out 参数?如果没有,谁能建议我如何从异步方法返回 OUT 参数?