环境:VS2005 C# WinForm我自定义的一个控件,上面的ToolStripMeunItem设了快捷键F1panel中放了两个这样的控件a和b,Z序a在上b在下。我执行b.BringToFront()将b放在上面,然后按F1,发现出来的内容还是a的。而如果我直接点击ToolStripMeunItem,则出来的内容是b的。怎么回事?

解决方案 »

  1.   

    楼上朋友能介绍具体些么?意思是C#中,如果一个控件的ToolStripMenuItem指定了快捷键,那么我在程序里就只能使用一个这样控件,如果使用多个,快捷键就会出问题(哪怕他们Z序不同),是吗?
      

  2.   

    没人回复,我结贴了,一个解决方法如下:
    Application.AddMessageFilter添加消息过滤,具体添加方法见google。
    为什么要在这里添加消息过滤而不是处理控件消息,是因为我考虑这是winForm消息机制的最底层,最为可靠灵活。捕获到快捷键消息后,哪个控件在Z序顶层,就调用其ToolStripMeunItem的PerformClick。