
protected override void WndProc(ref Message m) { if (m.Msg == 0x210) { Control control = Control.FromChildHandle(m.HWnd); int lparam = (int)m.LParam; int x = lparam & 0xffff; int y = (int)((lparam & 0xffff0000) >> 16); Point mousePoint = new Point(x, y); ToolStripContainer toolStripContainer = control.GetChildAtPoint(mousePoint) as ToolStripContainer; if (toolStripContainer != null) { Control ccontrol = toolStripContainer.GetChildAtPoint(mousePoint); ToolStripPanel toolStripPanel = ccontrol as ToolStripPanel; if (toolStripPanel != null) { Control toolStripPanelControl = toolStripPanel.GetChildAtPoint(toolStripPanel.PointToClient(control.PointToScreen(mousePoint))); if (toolStripPanelControl != null) { ToolStrip toolStrip = toolStripPanelControl as ToolStrip; if (toolStrip != null) { ToolStripItem toolStripItem = toolStrip.GetItemAt(toolStrip.PointToClient(control.PointToScreen(mousePoint))); if (toolStripItem != null) { toolStripItem.PerformClick(); return; } } } } } } base.WndProc(ref m); }
在一个控件里有ToolStrip,子窗体弹出的时候,点击ToolStripItem第一次没有反应,
需要点击2次才能工作的解决办法。