2

かなり簡単な質問がありますが、解決策を見つけることができません。タスクトレイにあるアプリケーションがあります。ユーザーがトレイアイコンを右クリックすると、プログラムはMenuItemsのメニューを表示します。MenuItemの一部がマウスにカーソルを合わせたときにコードを実行したいと思います。

これは可能ですか?

正しい方向に送ってくれませんか?

NotifyIconを使用しています

        trayMenu = new ContextMenu();
        trayMenu.MenuItems.Add("Exit", OnExit);

        trayIcon = new NotifyIcon();
        trayIcon.Text = "blah";

        trayIcon.Icon = new Icon("favicon.ico", 40, 40);
        trayIcon.ContextMenu = trayMenu;
        trayIcon.Visible = true;
4

3 に答える 3

1

MenuItemのSelectイベントが必要かもしれないと思います:

このイベントは通常、ユーザーがメニュー項目の上にマウスポインタを置いたときに発生します。このイベントは、ユーザーが矢印キーでメニュー項目までスクロールして、キーボードを使用してメニュー項目を強調表示したときにも発生する可能性があります。

于 2011-04-08T15:17:47.710 に答える
1

MouseHover各メニュー項目のまたはMouseEnterおよびMouseLeaveイベントを使用する必要があります。

更新:はい、NotifyIconコントロールにはContextMenuStripという名前のプロパティがあります。メニューを表示するには、ContextMenuStripコントロールを作成する必要があります。ToolStripMenuItemsタイプのアイテムが含まれています。簡単なプロトタイプを作成しようとしました-MouseHover問題なく動作します。

于 2011-04-08T15:15:14.117 に答える
0

これがあなたの解決策ですhttps://www.codeproject.com/Tips/254525/Automatically-display-Menu-on-Hover

private void Form1_Load(object sender, EventArgs e)
{
    this.menuStrip1.Items[0].MouseHover += new EventHandler(Form1_MouseHover);
}


void Form1_MouseHover(object sender, EventArgs e)
{
    if (sender is ToolStripDropDownItem)
    {
        ToolStripDropDownItem item = sender as ToolStripDropDownItem;
        if (item.HasDropDownItems && !item.DropDown.Visible)
        {
            item.ShowDropDown();
        }
    }
}
于 2017-08-02T03:46:57.097 に答える