私はNotifyIcon
クラスを使用して、タスクトレイにアイコンを表示しています。このアイコンは2つの機能を実行します。ユーザーが左ボタンでシングルクリックするとウィンドウが表示され、右ボタンでシングルクリックするとコンテキストメニューが表示されます。これは、ユーザーがコンテキストメニューのオプションをクリックした後に表示されるウィンドウとは別に、うまく機能します。ここに私のコードだ:NotifyIcon ContextMenuと多すぎるクリックイベント
contextMenuItems = new List<MenuItem>();
contextMenuItems.Add(new MenuItem("Function A", new EventHandler(a_Clicked)));
contextMenuItems.Add(new MenuItem("-"));
contextMenuItems.Add(new MenuItem("Function B", new EventHandler(b_Clicked)));
trayIcon = new System.Windows.Forms.NotifyIcon();
trayIcon.MouseClick += new MouseEventHandler(trayIcon_IconClicked);
trayIcon.Icon = new Icon(GetType(), "Icon.ico");
trayIcon.ContextMenu = contextMenu;
trayIcon.Visible = true;
問題は、ユーザーが「機能A」または「機能B」を選択したときに、私のtrayIcon_IconClicked
イベントが発生していることです。なぜそれが起こっているのだろうか?
おかげで、 J
ありがとうございます。 NotifyIconをターゲットコントロールとして使用していますか?あるいは、メニューを手動でポップアップすることさえできますか?私はContextMenu.Show()を試みましたが、それはパラメータとしてコントロールを必要とし、Popupイベントを発生させないようです。 – JWood
trayIcon_IconClickedイベントのクリックハンドラ内で右クリックを処理していますか?もしそうなら、しないでください。 ContextMenuプロパティを設定すると、コンテクストメニューに割り当てられているコントロールの右クリックイベントが自動的に処理されるため、これ以上処理する必要はありません。そのため、イベントを複製するだけなので、trayIcon_IconClickedイベントで省略されました。試してみてください。 – SPFiredrake
私は手動でクリックを処理していませんでしたが、私はContextMenuプロパティを設定していましたが、コンテキストメニューから項目を選択したときに、trayIcon_IconClickedイベントを発生させる動作があります。上記の例は、 "this"がApplicationオブジェクトであるため動作しません。私はContextMenuStripを試してより良い結果が得られるかどうかを見ていきます。 – JWood