3

C#を使用して、VisualStudio2010でシステムトレイアプリケーションを作成しています。

アプリケーションが起動したら、スレッドとシステムトレイアイコンを作成します。アイコンは表示されますが、アイコンの上にマウスを置くと消え(アプリケーションはまだ実行中です)、ボタンをクリックしてすべての非表示のアイコンを表示しても表示されません。

ただし、マウスオーバーを試みない場合は、システムトレイに残ります。

何か考えや経験はありますか?

前もって感謝します


答えてくれてありがとう。

ええと、おそらく好奇心旺盛な人のために、私が以前に修正したことです。

私は最初はWindowsフォームを使用していませんでしたが、これが問題が発生したときです。ただし、アプリをWindowsフォームに設定し、フォームを非表示にしてタスクバーに表示しない場合は、機能しました。

4

4 に答える 4

3

このコードをフォーム クラスに貼り付けます。

    protected override void OnFormClosing(FormClosingEventArgs e) {
        notifyIcon1.Visible = false;
        base.OnFormClosing(e);
    }

これにより、アイコンがトレイに残ることなく消えます。そのコードにブレークポイントを設定し、フォームが閉じている理由を調べます。理由がわからない場合は、スタック トレースをコピーして質問に貼り付けてください。

于 2010-09-24T16:48:38.357 に答える
1

これは、トレイアイコンが削除されたことを意味します。これは通常、プロセスが終了した後に発生しますが、トレイはそこにとどまります。これはWindowsのバグです。

したがって、何らかの理由で、トレイアイコンが「クラッシュ」する可能性があります。

あなたのコードを見ずに、これ以上コメントすることは不可能でしょう。

于 2010-09-24T15:45:29.783 に答える
1

アイコン オブジェクトを作成し、それを参照せずにスコープ外に出すと、次のガベージ コレクションでそのデストラクタが呼び出され、これが発生します。

于 2010-09-24T15:48:01.640 に答える