【问题标题】:Looking for an Elegant "Dont Show Me This Dialog Again" Dialog in C#在 C# 中寻找优雅的“不再显示此对话框”对话框
【发布时间】:2010-11-25 05:40:06
【问题描述】:

我一直在寻找一个在 C# 中带有“不要再次向我显示此对话框”复选框的对话框。

我用谷歌搜索了很多,但我找不到一个优雅的解决方案。

对话框的工作方式应该与原生 MessageBox.Show 类似,但带有一个新的属性值(布尔值)返回给调用者。

谢谢。

【问题讨论】:

    标签: c# dialog showdialog


    【解决方案1】:

    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

    【讨论】:

    【解决方案2】:

    为什么不创建自己的。这是一个非常简单的。只需从 System.Windows.Forms.Form 类派生并像你想要的那样模仿它。

    【讨论】:

    • 并不是我想的那么简单。 MessageBox 有不同的按钮选择和图标选择,我也需要它们。如果我可以从 MessageBox 派生,那就太好了。但我们不能派生 MessageBox,因为没有受保护的或公共的构造函数。
    • @Peter Lee - 我在 Java 中遇到了类似的问题。标准库提供了所有这些漂亮的标准外观消息对话框,但是一旦您想要自定义对话框,您就会失去所有标准宽度/高度、图标资源、按钮位置、按钮宽度、窗口边距等。必须深入研究 Java 如何构建其对话框的底层内容,以确保我的自定义对话框遵循标准对话框的外观和感觉。这并不好玩,它让我想要一些标准化的方式来做这件事。至少 Visual Studio GUI 设计器内置了一些很好的默认设置。
    • @Peter Lee:在您自己的自定义对话框中复制标准MessageBox 提供的所有可能样式当然是可能。这是更多的工作,但它是你可以一遍又一遍地重复使用的东西。这个示例(它重新创建了一个 Vista 风格的 TaskDialog,它在以前的操作系统版本中不可用)是一个很好的例子,说明了如何做到这一点:codeproject.com/KB/vb/vdialog.aspx
    【解决方案3】:

    我认为不会有现成的解决方案。为了实现“不再显示我”,您需要在 dailog 之外保留信息并创建用户配置文件。

    如果您有持久化用户配置文件的基础设施,您可以简单地创建一个类似于messagebox 类的类。但是,您不能从 messagebox 派生。

    【讨论】:

    • “不要再显示”与否,我已将其保存在 Settings.settings 中。
    • 所以你必须自己创建一个对话框。
    猜你喜欢
    • 2022-08-20
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多