1

CE 6.5 の通知を作成していますが、この通知はループ チェックで表示されるため、通知アイコンが徐々に増えています。それらを削除する方法はありますか?それとも、まったく表示されないようにしますか? システム トレイ アイコンではなく、通知ウィンドウが重要です。アイコンの .Dispose() は何もせず、無効化もしません(まだそこにあり、空白です)。バルーンの変更時にイベントを作成しようとしましたが、表示されていない場合は 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);
    }
4

1 に答える 1

0

イベントを使用するのではなく、別のタイマーを作成する必要がありました。これは私が望んでいたものにうまくいったようです。

        Timer _timer = new Timer();
        _timer.Tick += new EventHandler(delegate(object s, EventArgs e) { notification.Dispose(); });
        _timer.Interval = seconds * 1000;
        _timer.Enabled = true;
于 2012-05-30T09:50:49.150 に答える