You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过通知图标左键点击显示菜单且不在任务栏显示窗体

问题解决方法

核心问题分析

  • 窗体默认加载时处于显示状态,即便后续设置ShowInTaskbar=False,初始显示状态已让它出现在任务栏
  • 手动控制ContextMenuStrip.Visible的方式会触发窗体激活,导致任务栏出现该窗体
  • 事件处理绑定存在笔误(MyNoti_Click对应MyNotify.Click,变量名不一致)

修正步骤

  • 窗体加载时直接隐藏,并设置ShowInTaskbar=False
  • 将ContextMenuStrip绑定到NotifyIcon的ContextMenuStrip属性,由系统负责菜单显示逻辑
  • 修正事件处理命名,避免混淆

修正后的代码

Public Class frmNotificaction
    Public WithEvents MyNotify As New NotifyIcon With {.Icon = My.Resources.Icon1}
    Dim MyMenu As New ContextMenuStrip

    Private Sub frmNotificaction_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' 加载时隐藏窗体并设置不在任务栏显示
        Me.Hide()
        Me.ShowInTaskbar = False
        
        ' 添加菜单项目
        MyMenu.Items.Add("Item1")
        MyMenu.Items.Add("Item2")
        
        ' 将菜单绑定到通知图标
        MyNotify.ContextMenuStrip = MyMenu
        MyNotify.Visible = True
    End Sub

    ' 点击通知图标时系统会自动显示绑定的菜单,无需手动控制Visible
    Private Sub MyNotify_Click(sender As Object, e As EventArgs) Handles MyNotify.Click
        ' 可在此添加额外逻辑,比如区分左键/右键点击
    End Sub

    ' 窗体关闭时释放NotifyIcon,避免后台残留
    Private Sub frmNotificaction_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
        MyNotify.Dispose()
    End Sub
End Class

额外说明

  • 绑定ContextMenuStrip到NotifyIcon后,左键或右键点击图标都会自动弹出菜单,无需手动处理菜单的显示/隐藏
  • 必须在窗体关闭时释放NotifyIcon,否则程序退出后通知图标可能仍停留在系统托盘
  • 初始隐藏窗体时,推荐用Me.Hide()而非Me.Visible = False,语义更清晰

内容的提问来源于stack exchange,提问作者Mansour Dalir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:24:50