WPF 托盘图标菜单
WPF没有原生的托盘图标,用Winform的NotifyIcon无法取得焦点丢失事件,点其他窗口后菜单还硬生生的显示在原地,非常的尴尬
准备拔一下 HandyControl 的实现,发现代码有点多,有点迷惑
在具体的链接内实现是计时器+鼠标位置的各种判断,我没有细看里面为啥要用鼠标位置
https://www.cnblogs.com/sczmzx/p/5158127.html
自己利用Winform的NotifyIcon+计时器简单包装了一个
- MouseDown事件显示菜单后,启动计时器,检测当前窗口句柄(句柄理想情况必为当前的菜单窗口,记录为初始值),只要句柄发生变化说明丢失了焦点,则关闭菜单
- 菜单注册关闭事件,在关闭前停止计时器
获取前置窗口代码
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
2023.7
只要利用SetForegroundWindow将菜单窗口置顶即可,不需要定时器
浙公网安备 33010602011771号