簡體   English   中英

自定義任務欄圖標通知氣球

[英]Custom tray icon notification balloon

我有一個C#程序,它位於系統托盤中,並不時彈出一個提示氣球。 我想在通知提示框上提供2-3個按鈕以允許用戶在通知出現時采取各種操作-而不是例如不必單擊通知提示框以顯示包含每個可能操作的按鈕的表單。

我正在尋找實現此目標的最佳方法的建議。

編輯:澄清,我想在通知氣球上提供按鈕,以便用戶可以對通知采取直接操作,而不必通過應用程序的其他部分(例如表單或菜單)進行操作。

沒有內置方法。 我建議您編寫自己的“氣球”並激活它,而不是調用.ShowBalloon()

這就是我的方法。 這可能不是正確的方法。 我這樣做是因為.ShowBalloonTip(i)無法按我的預期工作。 它不會停留i幾秒鍾,然后熄滅。 因此,我在另一個線程中執行並強制處理。

    private static NotifyIcon _notifyIcon;

    //you can call this public function
    internal static void ShowBalloonTip(Icon icon)
    {
        BackgroundWorker worker = new BackgroundWorker();
        worker.DoWork += new DoWorkEventHandler(worker_DoWork);
        worker.RunWorkerAsync(icon);
    }

    private static void worker_DoWork(object sender, DoWorkEventArgs e)
    {
        Show(e);
        Thread.Sleep(2000); //meaning it displays for 2 seconds
        DisposeOff();
    }

    private static void Show(DoWorkEventArgs e)
    {
        _notifyIcon = new NotifyIcon();
        _notifyIcon.Icon = (Icon)e.Argument;

         _notifyIcon.BalloonTipTitle = "Environment file is opened";
        _notifyIcon.BalloonTipText = "Press alt+tab to switch between environment files";

        _notifyIcon.BalloonTipIcon = ToolTipIcon.Info;
        _notifyIcon.Visible = true;
        _notifyIcon.ShowBalloonTip(2000); //sadly doesnt work for me :(
    }

    private static void DisposeOff()
    {
        if (_notifyIcon == null)
            return;

        _notifyIcon.Dispose();
        _notifyIcon = null;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM