日期:2014-05-18  浏览次数:20953 次

ContextMenuStrip的问题~ 有熟的请进~路过的高手也请进
我自己写一个右键菜单用在另外的应用程序上,使用了ContextMenuStrip控件,菜单因为是要跟着鼠标走,所以用contextMenuStrip1.Show(new Point(x, y))来打开,但是菜单打开后发现了两个问题:

一、打开一级菜单,任务栏上就出现一个最小化的按钮,进而打开二级菜单,就又出现一个最小化按钮,就好像是打开了窗口一样,有没有朋友知道如何取消
二、因为不是在母窗口内显示右键菜单,其一个结果是点击桌面空白的部分无法关闭菜单,我偿试用鼠标HOOK来监视左键,如果点击左键就关掉右键菜单,那么就无法在菜单中进行选择的操作了,因为最后选定也是要点击左键的。所以必须判断鼠标是否在菜单上~ 但是一级菜单可以固定,但是显示子菜单时,菜单的范围就会发生变化,所以要实时查找ContextMenuStrip控件中显示的子菜单,如何进行这种查找呢?我查了MSDN ContextMenuStrip好像没有提供查找子对象的方法.

------解决方案--------------------
你在主窗体加了NotifyIcon控件了?
在打开菜单时,是否实例化了主窗体对象?
每实例化一次就会在右下角出现一个NotifyIcon。。。
我猜是这样的。。。

第二个问题可能帮不上:
不过你为何不在窗体失去焦点关闭菜单呢?
------解决方案--------------------
第一个问题应该是你的NotifyIcon在每一次打开时都进行调用造成的