C# フォームの最小化時に通知領域に格納する

準備

(なし)

デザイン

1. フォーム (Form1) に NotifyIcon (notifyIcon1) を配置します。
2. フォーム (Form1) にリストボックス (listBox1) を配置します。

サンプルコード (C#)

// 名前空間の追加
// (なし)

// コード
private void Form1_ClientSizeChanged(object sender, EventArgs e)
{
  notifyIcon1.Icon = new Icon(@"C:\Windows\Installer\{FF6BA80C-E7E4-3BA8-945D-BC6EC31E41C4}\Icon_msi.ico");

  if (this.WindowState == FormWindowState.Minimized)
  {
    this.WindowState = FormWindowState.Normal;
    this.ShowInTaskbar = false;
    this.Visible = false;
  }
}

private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
  this.Visible = true;
  this.ShowInTaskbar = true;
  notifyIcon1.Icon = null; 
}

解説

フォームを最小化すると、タスクバーに格納せずに通知領域に格納します。通知領域のアイコンをダブルクリックすると、元に戻ります。

実現方法は、最小化時にタスクバーへのアプリケーションアイコンを消すとともにフォームを非表示にしています。また、最小化状態をノーマル状態にしていますが、これは最小化状態のままですと、Windows 3.1 の時代のような最小化状態がスタートメニューの上にまれに見えてしまうからです。

通知領域のアイコンをダブルクリックすると最小化時の挙動と逆の動作を行って、アプリケーションを元の状態に戻しています。

結果

動作確認環境

Visual Studio 2015 Professional (C# 6.0)

Follow me!