2

我有一个相当简单的问题,但我找不到解决方案。我有一个驻留在任务托盘中的应用程序。当用户右键单击托盘图标时,程序会显示一个 MenuItems 菜单。当我的一些 MenuItems 鼠标悬停在上面时,我想执行代码。

这可能吗?

你能把我送到正确的方向吗?

我正在使用通知图标

        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

您必须使用每个菜单项的MouseHoverMouseEnterMouseLeave事件。

更新:是的,NotifyIcon 控件有一个名为 ContextMenuStrip 的属性。您必须创建 ContextMenuStrip 控件才能显示菜单。它包含 ToolStripMenuItems 类型的项目。我试图创建一个简单的原型 -MouseHover工作得很好。

于 2011-04-08T15:15:14.117 回答
1

我想你可能想要 MenuItem 的Select 事件

当用户将鼠标指针放在菜单项上时,通常会引发此事件。当用户使用键盘通过箭头键滚动到菜单项来突出显示菜单项时,也可以引发该事件。

于 2011-04-08T15:17:47.710 回答
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 回答