[Tips][NotifyIcon] タスクトレイアイコンがダブルクリックされたらフォームを表示する

タスクトレイアイコンがダブルクリックされたかどうかを知るにはNotifyIconクラスのDouobleClickイベントを使用します。

このイベントが発生したときにFormのVisibleプロパティをTrueにしWindowStateを変更すれば、タスクトレイのアイコンダブルクリック時フォームが表示されたようになります。

VBの例

' フォームリサイズ時の処理
Private Sub Form5_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
    'フォームが最小化されたか?
    If Me.WindowState = FormWindowState.Minimized Then
        'フォームを非表示にする
        Me.Visible = False

        'タスクトレイに表示するアイコンを設定する
        Dim ico As New System.Drawing.Icon("cloudservice.ico")
        NotifyIcon1.Icon = ico

        'タスクトレイにアイコンを表示する
        NotifyIcon1.Visible = True
    Else
        'タスクトレイのアイコンを非表示にする
        NotifyIcon1.Visible = True
    End If
End Sub

' タスクトレイアイコンがダブルクリックされたときの処理
Private Sub NotifyIcon1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick
    'フォームを表示する
    Me.Visible = True

    If Me.WindowState = FormWindowState.Minimized Then
        'ノーマルウィンドウに戻す
        Me.WindowState = FormWindowState.Normal

        'アクティブにする
        Me.Activate()

        'タスクトレイからアイコンを削除する
        NotifyIcon1.Visible = False
    End If

End Sub

C#の例

// フォームリサイズ時の処理
private void Form5_Resize(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        //フォームを非表示にする
        this.Visible = false;

        //タスクトレイに表示するアイコンを設定する
        System.Drawing.Icon ico = new System.Drawing.Icon("cloudservice.ico");
        notifyIcon1.Icon = ico;

        //タスクトレイにアイコンを表示する
        notifyIcon1.Visible = true;
    }
    else
    {
        // タスクトレイのアイコンを非表示にする
        notifyIcon1.Visible = true;
    }
}

// タスクトレイアイコンがダブルクリックされたときの処理
private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
    //フォームを表示する
    this.Visible = true;

    if (this.WindowState == FormWindowState.Minimized)
    {
        //ノーマルウィンドウに戻す
        this.WindowState = FormWindowState.Normal;

        //アクティブにする
        this.Activate();

        //タスクトレイからアイコンを削除する
        notifyIcon1.Visible = false;
    }
}

[Tips][NotifyIcon] フォームの最小化ボタンが押されたときにタスクトレイにアイコンを表示する

FormクラスResizeイベントを使用するとフォームが最小化されたかどうかを判定することができます。
FormクラスのWindowStateプロパティを参照することで、現在フォームがどのような状態か(最小化されているか最大化されているか)を調べ、最小化されたときにタスクトレイアイコンを表示するようにします。

VBの例

    Private Sub Form4_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
        'フォームが最小化されたか?
        If Me.WindowState = FormWindowState.Minimized Then
            'フォームを非表示にする
            Me.Visible = False

            'タスクトレイに表示するアイコンを設定する
            Dim ico As New System.Drawing.Icon("cloudservice.ico")
            NotifyIcon1.Icon = ico

            'タスクトレイにアイコンを表示する
            NotifyIcon1.Visible = True
        Else
            'タスクトレイのアイコンを非表示にする
            NotifyIcon1.Visible = True
        End If
    End Sub

C#の例

private void Form4_Resize(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        //フォームを非表示にする
        this.Visible = false;

        //タスクトレイに表示するアイコンを設定する
        System.Drawing.Icon ico = new System.Drawing.Icon("cloudservice.ico");
        notifyIcon1.Icon = ico;

        //タスクトレイにアイコンを表示する
        notifyIcon1.Visible = true;
    }
    else
    {
        // タスクトレイのアイコンを非表示にする
        notifyIcon1.Visible = true;
    }
}