[C#]タスクトレイの右クリックメニューを、左クリック時にも表示させる

カテゴリ: C# | タグ: ,

C#でタスクトレイアプリを作る時、右クリックメニューはNotifyIconを用意したうえで、ContextMenuStripを使ってメニューを作ります。

ですが使い勝手を考えた場合に、このメニューを左クリック時も表示させたい場合があります。

このような場合は、NotifyIconに以下のイベント定義を行うと良いです。

左クリック時にもタスクトレイアイコンのメニューを出す方法

NotifyIconのMouseUpイベントを用意し、下記のハンドラを作ればよいです。リフレクションを使っているのでusing System.Reflection;の定義が必要なことに注意が必要です。

using System.Reflection;
...

private void notifyIcon1_MouseUp( object sender, MouseEventArgs e ) {
    if ( e.Button == MouseButtons.Left ) {
        MethodInfo method = typeof( NotifyIcon ).GetMethod( "ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic );
        method.Invoke( notifyIcon1, null );
    }
}

MouseUpのハンドラなので左ボタンのClickとは微妙にふるまいが変わりますが、実用上は問題ないレベルです。


Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です