zoukankan      html  css  js  c++  java
  • Winforms界面开发技巧:Apps中显示Toast Notifications(二)

    下载DevExpress v19.2完整版

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

    Activator和COM服务器

    Windows在其“操作中心”中保留toast notifications。

    通常,操作中心在用户关闭此屏幕后清除所有toasts(如果用户打开、关闭并在此打开操作中心,则该操作将为空),但是某些toasts可以保留在操作中心中,直到用户手动将其关闭为止。即使用户注销并返回Windows之后,此类toasts仍保留在操作中心中。此外,单击toasts会启动其父应用程序,要显示此类通知,请创建一个自定义Activator—DevExpress.XtraBars.ToastNotifications.ToastNotificationActivator类的后代。

    [Guid("39697E4E-3543-4414-A694-90097B433DC6"), ComVisible(true)]
    public class ToastNotificationActivatorCustom : ToastNotificationActivator {

    public override void OnActivate(string arguments, Dictionary<string, string> data){
    //specify what happens when a user interacts with a toast
    }
    }

    您将需要注册此自定义Activator,在设计时设置组件的ApplicationActivator属性,或在代码中调用RegisterApplicationActivator方法。

    toastNotificationsManager1.RegisterApplicationActivator(
    typeof(ToastNotificationActivatorCustom));

    您还需要注册一个COM服务器。 为此,请调用DevExpress.Data.ShellHelper.RegisterComServer方法。 请注意,如果使用ShellHelper类创建应用程序快捷方式,则需要使用带有activatorType参数的TryCreateShortcut方法重载。 否则,如果您使用应用安装程序添加应用程序快捷方式,则安装程序还必须添加HKEY_CURRENT_USER SOFTWARE Classes CLSID {-your-GUID-here-} LocalServer32注册表项,并以路径将应用程序可执行文件添加为 值。

    if (!ShellHelper.IsApplicationShortcutExist("My Toast Application")
    {
    ShellHelper.TryCreateShortcut(
    Process.GetCurrentProcess().MainModule.FileName,
    toastNotificationsManager1.ApplicationId,
    "My Toast Application",
    @"D:WorkImages\_Iconsicochain-icon.ico",
    typeof(ToastNotificationActivatorCustom));
    ShellHelper.RegisterComServer(
    Process.GetCurrentProcess().MainModule.FileName,
    typeof(ToastNotificationActivatorCustom));
    }

    GUIDs

    使用toasts时,您需要几个唯一的ID。

    • 针对组件的ApplicationID属性
    • 针对每个通知的ID属性
    • 针对标记Activator类的Guid属性

    您可以混搭键盘来生成唯一的ID,但是更有效的方法是使用联机GUID生成器或Visual Studio中包含的生成器("Tools | Create GUID")。

    传递重要通知

    即使您正确设置了所有内容,通知也可能不会传递给用户。 交付会受到以下因素的影响:

    • 较旧的OS版本
    • 操作中心设置中禁用了通知
    • 内部错误等

    在这种情况下,您可以处理ToastNotificationsManager.Failed事件,以通过其他方法(例如标准消息框)将关键消息传递给用户。

    using DevExpress.XtraBars.ToastNotifications;
    using DevExpress.XtraEditors;

    void manager_Failed(object sender, ToastNotificationFailedEventArgs e)
    {
    if ((string)e.NotificationID == "toast_connection_lost_id_das0ud0q94")
    {
    IToastNotificationProperties undeliveredToast =
    toastNotificationsManager1.GetNotificationByID(e.NotificationID);
    XtraMessageBox.Show(undeliveredToast.Body, undeliveredToast.Header);
    }
    }


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

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

    扫描关注DevExpress中文网微信公众号,及时获取最新动态及最新资讯

    DevExpress中文网微信

  • 相关阅读:
    三、改变struts.xml默认路径后web.xml如何配置
    学习日记_SSH框架web.xml配置文件篇
    StrutsPrepareAndExecuteFilter的作用
    web.xml 中的listener、 filter、servlet 加载顺序及其详解
    HTTP协议是什么?(及get和post请求的区别)
    REST和SOAP Web Service的比较
    struts.xml中的intercepter
    Struts2 XML配置详解
    web.xml配置详解 (及<context-param>配置作用 )
    Java常量池详解
  • 原文地址:https://www.cnblogs.com/AABBbaby/p/12425166.html
Copyright © 2011-2022 走看看