【发布时间】:2010-11-25 05:40:06
【问题描述】:
我一直在寻找一个在 C# 中带有“不要再次向我显示此对话框”复选框的对话框。
我用谷歌搜索了很多,但我找不到一个优雅的解决方案。
对话框的工作方式应该与原生 MessageBox.Show 类似,但带有一个新的属性值(布尔值)返回给调用者。
谢谢。
【问题讨论】:
标签: c# dialog showdialog
我一直在寻找一个在 C# 中带有“不要再次向我显示此对话框”复选框的对话框。
我用谷歌搜索了很多,但我找不到一个优雅的解决方案。
对话框的工作方式应该与原生 MessageBox.Show 类似,但带有一个新的属性值(布尔值)返回给调用者。
谢谢。
【问题讨论】:
标签: c# dialog showdialog
Vista 和 Windows 7 应用程序可以使用新的 TaskDialog 功能,这些功能扩展了标准 MessageBox 以支持底部的复选框(以及各种其他好东西,例如命令链接、自定义按钮文本、页脚等)。
不幸的是,您需要在 C# 中进行一些互操作才能访问它。如果您只希望高级 TaskDialogs 以 Vista/Windows 7 为目标,请使用来自http://code.msdn.microsoft.com/WindowsAPICodePack 的 WindowsAPICodePack,它可以为您处理互操作复杂性。
如果您需要支持 XP,这里有一个出色的包装器,它支持 Vista/7 上的本机 TaskDialogs,并在此处为 XP 提供 WinForms 后备: http://www.codeproject.com/KB/vista/Vista_TaskDialog_Wrapper.aspx
【讨论】:
为什么不创建自己的。这是一个非常简单的。只需从 System.Windows.Forms.Form 类派生并像你想要的那样模仿它。
【讨论】:
MessageBox 提供的所有可能样式当然是可能。这是更多的工作,但它是你可以一遍又一遍地重复使用的东西。这个示例(它重新创建了一个 Vista 风格的 TaskDialog,它在以前的操作系统版本中不可用)是一个很好的例子,说明了如何做到这一点:codeproject.com/KB/vb/vdialog.aspx
我认为不会有现成的解决方案。为了实现“不再显示我”,您需要在 dailog 之外保留信息并创建用户配置文件。
如果您有持久化用户配置文件的基础设施,您可以简单地创建一个类似于messagebox 类的类。但是,您不能从 messagebox 派生。
【讨论】: