Winforms界面开发技巧:Apps中显示Toast Notifications(一)

廉价感情. 提交于 2020-02-28 10:53:42

下载DevExpress v19.2完整版

DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。使用WinForms PictureEdit控件,可以在表单上显示图像。为控件实现DirectX渲染支持,可以轻松处理大的高DPI图像。想要体验?点击下载>>

Toast Notifications(或简称Toasts)是最初在Microsoft Windows 8中引入的平面通知,它们会弹出在屏幕的右下角,可以通过Windows操作中心进行访问。您可以使用DevExpress ToastNotificationManager组件将这些通知合并到下一个Windows Forms应用程序中。

WinForms Toast Notification Manager提供九种通知模板/样式——包括Windows 10通用模板,该模板使您可以合并用户交互控件,例如按钮或编辑器。

应用程序快捷方式

DevExpress WinForms Toast Notification Manager生成正版Windows Toast,这些toasts就像系统通知一样:

  • 即使已关闭关联的应用程序,也会出现Toasts。
  • Toasts可以从操作中心访问。
  • Toasts使用与操作系统相同的配色方案。

为了提供此功能,必须使用本地Windows API并遵循所有Microsoft准则和要求,这包括Microsoft的应用程序快捷方式要求。

在过去,微软对应用程序快捷方式的要求有争议,技术团队最近在设计时进行了较小的改进,并在组件的文档页面中添加新的部分,以帮助解决此问题。

Microsoft在其Toast Notifications Overview中明确声明,如果应用程序在Windows Start屏幕中没有快捷方式方式,则它将无法显示Toast。

由于Start屏幕快捷方式存储在 %AppData%\Microsoft\Windows\Start Menu\Programs 文件夹中,因此需要遵循一个简单的规则:如果要显示toast,请将应用程序快捷方式添加到Start Menu文件夹中。

组件在其智能标记菜单中包含"Create Application Shortcut"连接,单击此链接后,您的应用将正确显示通知。

"Create Application Shortcut"命令将快捷方式添加到个人的Start屏幕,换句话说,创建应用程序快捷方式的PC是唯一可以显示toast的机器,其他任何计算机的Start屏幕都没有指向应用程序的快捷方式。如果要显示所有用户的toast,请记住您的应用程序安装程序配置在%AppData%\Microsoft\Windows\Start Menu\Programs文件夹中添加快捷方式(具有有效的AppUserModelID)。

最好的选择是使用安装程序将此快捷方式添加到用户计算机,如果这不是一个选择或您没有安装程序,则可以使用DevExpress.Data.ShellHelper.TryCreateShortcut方法添加适当的快捷方式。

using DevExpress.XtraBars.ToastNotifications;
using DevExpress.Data;

//if there's no app shortcut in the start screen, add it
if (!ShellHelper.IsApplicationShortcutExist("My Test App")) {
ShellHelper.TryCreateShortcut(
applicationId: manager.ApplicationId,
name: "My Test App");
//restart the app
Application.Restart();
}

请注意,TryCreateShortcut方法的可靠性不如其他方法可靠。首先,您的应用可能没有必要的权限将文件写入系统文件夹。其次,请注意上面代码片段中Application.Restart方法的使用。 如果应用程序已经在运行,则将其快捷方式添加到Start屏幕将不会启用Toast,需要重新启动应用程序。


DevExpress v19.2线上公开课即将开课,前10名免费参与哦~

DevExpress技术交流群:540330292      欢迎一起进群讨论

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!