#c# #winforms #menuitem #mousehover
#c# #winforms #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;
Комментарии:
1. Какие кнопки? Вы только что описали меню, содержащее пункты меню. Я нигде не вижу кнопок.
2. @cody Приношу свои извинения. Обычно я не . Net developer и не подумал о том, что выбор слова противоречит . «Кнопка» сетевого управления. Я соответствующим образом отредактирую свой пост.
3. bdeetz, используете ли вы элемент управления NotifyIcon в своем приложении?
Ответ №1:
Вам придется использовать события MouseHover
or MouseEnter
и MouseLeave
каждого элемента меню.
Обновление: Да, элементы управления NotifyIcon имеют свойство с именем ContextMenuStrip. Вам нужно будет создать элемент управления ContextMenuStrip для отображения меню. Он содержит элементы типа ToolStripMenuItems. Я попытался создать простой прототип — MouseHover
работает просто отлично.
Комментарии:
1. MenuItems не раскрывают эти события
2. Я не думаю, что эти события существуют — по крайней мере, согласно MSDN
3. да, но вы используете ContextMenuStrips с ContextMenuItems с элементом управления NotifyIcon, к сожалению, эти элементы управления не предоставляют никаких событий выбора 😉
4. Джастин — зацени это msdn.microsoft.com/en-us/library /…
5. Спасибо, ребята. После перевода моего кода на использование ToolStripMenuItem вместо MenuItem я смог использовать обработчик событий для наведения курсора мыши. Еще раз спасибо.
Ответ №2:
Я думаю, вам может понадобиться событие выбора в MenuItem:
Это событие обычно возникает, когда пользователь наводит указатель мыши на пункт меню. Событие также может быть вызвано, когда пользователь выделяет пункт меню с помощью клавиатуры, прокручивая его с помощью клавиш со стрелками.
Комментарии:
1. Отрицательный ответ — ответ правильный, поскольку в вопросе указаны используемые элементы меню. Если вы не согласны, полезно оставить комментарий, объясняющий почему (если, конечно, вы не AC)
Ответ №3:
Вот ваше решение 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 amp;amp; !item.DropDown.Visible)
{
item.ShowDropDown();
}
}
}