0

クリック直後ではなく、いくつかのアクションを実行した後に、左クリックと右クリックの両方で、通知アイコンのコンテキスト メニューのコンテキスト メニューを表示する必要があります。

次のように左クリックで完全に機能します。

sysTrayIcon.MouseClick += OnSysTrayClicked;

private static void OnSysTrayClicked(Object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        PerformActions();
        MethodInfo oMethodInfo = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic);
        oMethodInfo.Invoke(sysTrayIcon, null);
    }
}

ただし、右クリックは引き続き自動的に処理され、関連するContextMenuStripものは右クリックで表示されます。イベントハンドラでそれをオーバーライドする方法はありますか?

4

1 に答える 1

2

2 つのオプションがあります。

オプション A: コンテキスト メニューを this.ContextMenuStrip に割り当てないでください。いつでもコンテキスト メニューを手動で開きます。strip.Top と strip.Left は絶対スクリーン座標でなければならないことに注意してください。

オプション B: マウスの右ボタンの場合は this.ContextMenuStrip OnMouseDown の割り当てを解除し、OnMouseUp を再度割り当てます。このを参照してください。

于 2013-01-15T10:37:59.377 に答える