2009-10-09 28 views
4

我正在寻找一个体面的替代标准窗口是/否或是/否/取消MessageBox。替换是/否/取消MessageBox(C#)

我经常看到的方式,如滥用这些标准的对话框:“要以纯文本格式保存回答YES或HTML回答NO保存”。显然,文本应为“另存为:并且”按钮应标记为“文本”和“HTML”。这不是被问及的是/不是问题,尽管可以用这种方式表达,但阅读和理解并不容易。

微软没有办法改变按钮上的文字。没有快速/简单的方式来从零开始构建替代品......正如上面提到的使用尴尬风格的应用程序数量所证明的那样。

有没有免费的C#更换对话框或消息框在那里,让你至少:
- 指定按钮
的数量 - 指定文本显示上的每个按钮
- 指定默认按钮

我看了,并且一直找不到。我只会自己构建一个,但是我对于全功能控件应该具有的所有行为都不够熟悉,因为我只需要/使用/知道一个小子集。我不使用两个示例:主题和国际化。我需要的东西,我的同事也将要使用。)

+0

当然,正确的方法是提出正确的问题:“你想将文档保存为纯文本吗?” – EFraim

+2

但是,如果您回答“否”,是否意味着它被保存加密?不,需要更多的文本才能将它清楚地解释为是/否问题。 –

回答

6

退房在CodeProject Dissecting the MessageBox。该项目有点过时,但它几乎正是你想要的,它不应该花太多时间来更新它。

+0

这确实看起来不错。它包括我的同事可能需要或喜欢的一些“额外”。而且由于它的来源,它甚至可以定制/扩展。谢谢。 –

3

根据您的目标平台上,一个task dialog可能是这样做的一个很好的方式。在Windows API Code Pack中有一个用于任务对话框的.NET包装器。然而,这些都只能在Windows Vista和上面,而不是在XP或2003

+0

谢谢,但我们现在肯定需要支持XP。但回应可能会帮助其他人! –

2

坦率地说,它并不难,自己创建这样一个消息框提供的,我们有这样的事情,我们正在开发的当前应用程序的工作。

你需要的是一对的FlowLayout将自动对齐您创建的任何按钮,按钮。我们的API然后有类似的东西(参数字符串,DialogResult > []按钮)

元组是一个助手类,它包含两个值。该字符串是按钮的文本,Dialogresult是我们的消息框在单击具有所述文本的按钮时返回的那个。

2

我同意弗兰克。创建自己的通用表单来处理这个问题并不困难。没有进入代码,形式应做到以下几点

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

2)有一个方法,用于将按钮,以2个参数,一个用于按钮文本,和一个用于对话结果

3)当显示形式时,其应该在模态对话框模式,使得应用程序的其余部分处于非活动状态,直到单击其中一个选项。

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

使用Flow布局,无论消息的大小或按钮的数量如何,您都应该能够正确显示它。