C # WinForms trayapp MenuItem Обнаружение зависания мыши - PullRequest
2 голосов
/ 08 апреля 2011

У меня довольно простой вопрос, но я не могу найти решение.У меня есть приложение, которое находится в панели задач.Когда пользователь щелкает правой кнопкой мыши значок в трее, программа отображает меню MenuItems.Я хотел бы выполнить код, когда некоторые из моих MenuItems наведены на мышь.

Возможно ли это?

Можете ли вы отправить мне в правильном направлении?

Я использую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;

Ответы [ 3 ]

1 голос
/ 08 апреля 2011

Я думаю, что вам может понадобиться событие Select элемента MenuItem :

Это событие обычно возникает, когда пользователь наводит указатель мыши на элемент меню.Событие также может быть вызвано, когда пользователь выделяет элемент меню с помощью клавиатуры, прокручивая до пункта меню клавиши со стрелками.

1 голос
/ 08 апреля 2011

Вам придется использовать события MouseHover или MouseEnter и MouseLeave каждого элемента меню.

Обновление : Да, элементы управления NotifyIcon имеют свойство с именем ContextMenuStrip.Вам нужно создать элемент управления ContextMenuStrip для отображения меню.Содержит элементы типа ToolStripMenuItems.Я попытался создать простой прототип - MouseHover отлично работает.

0 голосов
/ 02 августа 2017

Вот ваше решение 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();
        }
    }
}
...