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とは微妙にふるまいが変わりますが、実用上は問題ないレベルです。
こちらもおススメ