[Slideshare] FileSystemWatcherコントロールを使用したアプリケーションの作成

今回はFileSystemWatcherコントロールを使用してファイルを監視するアプリケーションを作成します。
アプリを作成する中で、設定をファイルに保存する方法とタスクトレイに表示する方法についても説明します。

[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;
    }
}

[Tips][NotifyIcon] バルーンツールチップを表示する

strong>NotifyIconクラスのShowBalloonTipメソッドを使用すると、バルーンツールチップを表示させることができます。
ShowBaloonTipメソッドの第1引数にはバルーンツールチップを表示させる時間(ミリ秒)、第2引数にはツールチップに表示するタイトル、第3引数にはツールチップのメッセージ、第4引数にはツールチップアイコンを指定します。
ツールチップアイコンはError, Info, None, Warningの4種類あります。

下記はバルーンツールチップを表示する例です。
VBの例
'タスクトレイに表示するアイコンを設定する
Dim ico As New System.Drawing.Icon("cloudservice.ico")
NotifyIcon1.Icon = ico

'バルーンツールチップを表示する
NotifyIcon1.ShowBalloonTip(3000, "Error", "エラーアイコンが表示されます", ToolTipIcon.Error)
'NotifyIcon1.ShowBalloonTip(3000, "Info", "情報アイコンが表示されます", ToolTipIcon.Info)
'NotifyIcon1.ShowBalloonTip(3000, "None", "アイコンは表示されません", ToolTipIcon.None)
'NotifyIcon1.ShowBalloonTip(3000, "Warning", "警告アイコンが表示されます", ToolTipIcon.Warning)

'タスクトレイにアイコンを表示する
NotifyIcon1.Visible = True

C#の例

// タスクトレイに表示するアイコンを設定する
System.Drawing.Icon ico = new System.Drawing.Icon("cloudservice.ico");
notifyIcon1.Icon = ico;
// バルーンツールチップを表示する
notifyIcon1.ShowBalloonTip(3000, "Erro", "エラーアイコンが表示されます", ToolTipIcon.Error);
//notifyIcon1.ShowBalloonTip(3000, "Info", "情報アイコンが表示されます", ToolTipIcon.Info);
//notifyIcon1.ShowBalloonTip(3000, "None", "アイコンは表示されません", ToolTipIcon.None);
//notifyIcon1.ShowBalloonTip(3000, "Warning", "警告アイコンが表示されます", ToolTipIcon.Warning);
// タスクトレイにアイコンを表示する
notifyIcon1.Visible = true;

[Tips][NotifyIcon] ツールヒントを表示する

タスクトレイのアイコンがマウスオーバーされたときにツールヒントを表示するにはNotifyIconクラスのTextプロパティを使用します。

Textプロパティにはツールヒントとして表示するメッセージをセットします。

下記は、ツールヒントを表示する例です。

VBの例

' フォームロード時の処理
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'タスクトレイに表示するアイコンを設定する
    Dim ico As New System.Drawing.Icon("cloudservice.ico")
    NotifyIcon1.Icon = ico

    'ツールヒントを設定する
    NotifyIcon1.Text = "ツールヒントを表示"

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

' フォームが閉じられたときの処理
Private Sub Form2_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    'タスクトレイのアイコンを非表示にする
    NotifyIcon1.Visible = False
End Sub

C#の例

// フォームロード時の処理
private void Form2_Load(object sender, EventArgs e)
{
    // タスクトレイに表示するアイコンを設定する
    System.Drawing.Icon ico = new System.Drawing.Icon("cloudservice.ico");
    notifyIcon1.Icon = ico;

    // ツールヒントを設定する
    notifyIcon1.Text = "ツールヒントを表示";

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

// フォームが閉じられたときの処理
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
    // タスクトレイのアイコンを非表示にする
    notifyIcon1.Visible = false;
}