【C#】タスクトレイに常駐するアプリの実装Tips

Windows Forms で作成したソフトをタスクトレイに常駐させてメインウインドウを表示しないときの実装方法の紹介です。

条件は以下の通り。

  • Windows Forms
  • タスクバーにアイコンを表示しない
  • タスクトレイの常駐させる
  • 起動したときにウインドウ(フォーム)を表示しない

確認環境

以下環境で確認しています。

  • Windows10
  • VisualStudio2019
  • .NET Frameowrk 4.8.1

実装方法

事前にメインフォーム上にNotifyIconコントロールを配置して、Iconプロパティに何かアイコンを指定しておきます(Icon に何も指定しないとタスクトレイにアイコンが表示されません)

public Form_Main()
{
    this.InitializeComponent();
    this.WindowState = FormWindowState.Minimized;
    // コンストラクタ内もしくはGUIの設定でMinimizedを指定しておく
    // これを指定しないと起動した瞬間一瞬だけ表示されてしまう
}

private void Form_Main_Shown(object sender, EventArgs e)
{
    this.Visible = false; // ShownもしくはActivatedイベントでVisibleにfalseを指定
}

情報が錯綜しまくってますが、以下の注意点です。

Alt + Tab でフォームが表示できたり、不必要な指定があったりするので以下参照ください。

// ★(1)これだけだとAlt + Tabで表示されてしまう
WindowState = FormWindowState.Minimized;
ShowInTaskbar = false;

// ★(2)Visibleを指定した場合は指定不要
Visible = false
// ShowInTaskbar = false; // ★←こっちは指定不要

// ★(3)Opacityは指定不要
//Opacity = 0; いらない

あと CreateParams をオーバーライドしろとかたまにありますが、何情報かわからないですが Visibl eを false にするだけで十分なので必要ありません。