C# WinForms托盘应用MenuItem鼠标悬停检测

发布于 2024-10-31 14:37:28 字数 473 浏览 0 评论 0原文

我有一个相当简单的问题,但我找不到解决方案。我有一个驻留在任务托盘中的应用程序。当用户右键单击托盘图标时,程序会显示 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;

I have a fairly simple question, but I'm failing to find the solution. I have an application that resides in the task tray. When a user right clicks the tray icon, the program displays a menu of MenuItems. I would like to execute code when some of my MenuItems are mouse hovered over.

Is this possible?

Can you send me in the right direction?

I am using 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;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

指尖凝香 2024-11-07 14:37:28

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

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

You'll have to use MouseHover or MouseEnter and MouseLeave events of each menuitem.

Update:
Yep, NotifyIcon controls have a property named ContextMenuStrip. You'll have to create the ContextMenuStrip control to display the menu. It contains items of ToolStripMenuItems type. I tried to create a simple prototype - MouseHover works just fine.

心头的小情儿 2024-11-07 14:37:28

我想您可能需要 MenuItem 的 选择事件:

此事件通常在以下情况下引发:
用户将鼠标指针放在
菜单项。活动还可以
当用户突出显示菜单时引发
通过滚动使用键盘的项目
使用箭头键转到菜单项。

I think you might want the MenuItem's Select event:

This event is typically raised when
the user places the mouse pointer over
the menu item. The event can also be
raised when the user highlights a menu
item using the keyboard by scrolling
to the menu item with the arrow keys.

输什么也不输骨气 2024-11-07 14:37:28

这是您的解决方案 https://www.codeproject.com/提示/254525/悬停时自动显示菜单

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();
        }
    }
}

Here is your solution 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();
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文