清除Windows Mobile上的通知图标

时间:2012-05-28 11:27:23

标签: c# winforms windows-ce

我正在为CE 6.5创建通知,但是这个通知是在循环检查中提出的 - 所以渐渐地通知图标正在建立。有没有办法删除它们?或者也许让它们根本不出现?通知窗口是重要的,而不是系统托盘图标。 图标上的Dispose()没有做任何事情,也没有使它无效(仍然存在,只是空白)。我尝试在气球更换时制作一个事件,如果不可见,它会处理(),但仍然无效。

        notification.BalloonChanged += new Microsoft.WindowsCE.Forms.BalloonChangedEventHandler(
            delegate(object s, Microsoft.WindowsCE.Forms.BalloonChangedEventArgs e)
            {
                if (!notification.Visible)
                    notification.Dispose();
            });

我的所有搜索都只返回了程序完成后处理的建议。 无论如何这里是我的工作。谢谢!

    private delegate void DelegateNotificationWindow(string error, int seconds);
    private void InvokeNotificationWindow(string message, int seconds)
    {
        Microsoft.WindowsCE.Forms.Notification notification = new Microsoft.WindowsCE.Forms.Notification();
        notification.Icon = Properties.Resources.Icon;
        notification.InitialDuration = seconds;
        notification.Caption = "Notification";
        notification.Critical = false;
        notification.Text = String.Format("<html><body><b>{0}</b></body></html>", message);
        notification.Visible = true;
    }

    public void ShowNotification(NotificationType type)
    {
        string message = "";
        switch (type)
        {
            case NotificationType.None: return;
            case NotificationType.NewEntitiesAvailable:
                message = "New Inspections/Works available, please run Receive New.";
                break;
        }
        DelegateNotificationWindow dlgt = new DelegateNotificationWindow(InvokeNotificationWindow);
        this.BeginInvoke(dlgt, message, 10);
    }

1 个答案:

答案 0 :(得分:0)

Dispose是对的,我只需要制作一个单独的计时器而不是使用事件。这似乎适用于我想要的东西。

        Timer _timer = new Timer();
        _timer.Tick += new EventHandler(delegate(object s, EventArgs e) { notification.Dispose(); });
        _timer.Interval = seconds * 1000;
        _timer.Enabled = true;