代码之家  ›  专栏  ›  技术社区  ›  Mark T

替换是/否/取消消息框(C)

  •  4
  • Mark T  · 技术社区  · 15 年前

    我正在寻找一个像样的windows是/否或是/否/取消消息框的替代品。

    我经常看到这些标准对话框被误用,例如:“以纯文本形式保存答案是,或以html形式保存答案否”。显然,文本应为“另存为”,按钮应标记为“文本”和“HTML”。这不是一个被问到是/否的问题,尽管可以这样措辞,但阅读和理解起来并不容易。

    Microsoft无法更改按钮上的文本。没有快速/简单的方法从头开始构建替换。。。使用上述笨拙风格的应用程序数量证明了这一点。

    是否有任何免费的C#替换对话框或消息框可以让您至少:
    -指定按钮的数量
    -指定要显示在每个按钮上的文本
    -指定默认按钮

    我已经找过了,但一直找不到。

    (我会自己构建一个,但我对功能齐全的控件应该具备的所有行为都不够熟悉,因为我只需要/使用/知道一小部分。我不使用两个示例:主题和国际化。我需要一些我的同事也会想用的东西。)

    4 回复  |  直到 15 年前
        1
  •  6
  •   Jim Lamb    15 年前

    退房 Dissecting the MessageBox 关于代码项目。这个项目有点过时,但它几乎就是你想要的,不需要花太多时间来更新它。

        2
  •  3
  •   itowlson    15 年前

    根据您的目标平台,一个 task dialog 这可能是一个很好的方法。中有一个用于任务对话框的.NET包装器 Windows API Code Pack

        3
  •  2
  •   flq    15 年前

    坦率地说,自己创建这样一个Messagebox并不难,我们正在开发的当前应用程序中有这样一个功能。

    您需要的是按钮的FlowLayout,它将自动对齐您创建的任何按钮。然后,我们的API有一些类似(params Tuple<string、DialogResult>[]按钮)

    Tuple是一个包含两个值的助手类。字符串是按钮的文本,Dialogresult是当单击带有所述文本的按钮时messagebox返回的结果。

        4
  •  2
  •   Kibbee    15 年前

    我同意弗兰克的看法。创建自己的通用表单来为您处理这个问题不会太困难。在不涉及代码的情况下,表单应该执行以下操作

    1) 具有一个属性来设置要向用户显示的消息。

    因此,要创建另存为/不保存/取消,您需要在步骤2中添加3个按钮,所有按钮都具有适当的按钮文本和对话框结果。

    使用Flow layout,无论消息大小或按钮数量如何,都应该能够使其正确显示。