是否可以在 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/