1

システム トレイに常駐し、ときどき通知バルーンをポップアップする C# プログラムがあります。通知バルーンに 2 ~ 3 個のボタンを用意して、通知が表示されたときにユーザーがさまざまなアクションを実行できるようにしたいと考えています。たとえば、通知バルーンをクリックして、可能なアクションごとにボタンを含むフォームを表示する必要はありません。

これを実装するための最良の方法についての提案を探しています。

編集:明確化、通知バルーンにボタンを提供して、ユーザーがアプリケーションの他の部分(フォームやメニューなど)からアクションを実行するのではなく、通知に対して直接アクションを実行できるようにします。

4

2 に答える 2

1

このための組み込みメソッドはありません。.ShowBalloon() を呼び出す代わりに、独自の「バルーン」を作成してアクティブにすることをお勧めします。

于 2012-03-10T00:52:25.397 に答える
-1

これが私のやり方です。それは正しいやり方ではないかもしれません。.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;
    }
于 2012-03-08T19:28:35.757 に答える