如何在C#中创建带有命令链接的Windows 7风格消息/对话框?

8
6个回答

8

这是一个任务对话框。它由Windows API Code Pack中的托管类封装。还有很多其他的Vista和Win7的特性。


2
它已经停止了。只需获取第一个谷歌搜索结果,即可到达此页面。 - Hans Passant
我猜NuGet现在是唯一可以找到它的地方了。很不幸,微软完全放弃了这个。 - Dan Bechard

4
我总是犹豫是否提供codeproject链接,但我认为你正在尝试创建一个TaskDialog。还有一个code.msdn.microsoft.com上的项目声称提供了WinForms TaskDialog。更可靠的TaskDialog来源是Windows API Code Pack
如果需要支持Windows XP或更早版本的操作系统,请确保提供备用消息框,因为任务对话框在Windows Vista中是新功能。

3
为什么Code Project的链接有问题?或者说,为什么会犹豫不决。我认为CP是一个很好的资源。对于我来说:CP + SO = 生计。 - Paul Sasik
1
在我的经验中,CodeProject在解决方案的质量和正确性方面非常不确定。我看过太多CodeProject上的文章,其中做了一些根本错误或愚蠢的事情,以至于我不能在一般情况下信任它。那里也有一些非常高质量的文章,但我发现它们是例外而不是规律。当我继承了一段使用http://www.codeproject.com/KB/cpp/colorprogressbar.aspx的生产代码时,我真想戳瞎自己的眼睛。 - Greg D

2

-1

尝试使用任务对话框(Task Dialog)。它与消息框(MessageBox)几乎相似。也许你会喜欢它。你只需要将WindowsAPICode Pack添加到你的引用中,并按照我给出的链接上的说明进行操作。

这个网站将会是一个很好的帮助。 http://www.developerfusion.com/article/71793/windows-7-task-dialogs/ 下面是一个示例:试一下吧!

               // Get reference to the dialog type.
               var dialogTypeName = "System.Windows.Forms.PropertyGridInternal.GridErrorDlg";
               var dialogType = typeof(Form).Assembly.GetType(dialogTypeName);

               // Create dialog instance.
               var dialog = (Form)Activator.CreateInstance(dialogType, new PropertyGrid());

               // Populate relevant properties on the dialog instance.
               dialog.Text = "Data Patch";
               dialogType.GetProperty("Details").SetValue(dialog, "Sample Text", null);
               dialogType.GetProperty("Message").SetValue(dialog, "Sample Text", null);

               // Display dialog.
               var result = dialog.ShowDialog();

抱歉 @MegaTron,我的回答不完整。我已经修改了它。希望这个答案也能有所帮助。


-1

您可以创建自己的消息窗体,其中显示您想要的内容,并使用窗体展示它。

MyMessageForm form = new MyMessageForm();
form.Show();

-2

DevExpress是一家成熟的第三方Windows表单提供商,如果您感兴趣,值得一看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接