Add `ClickThrough` to `ToolStrip`/`MenuStrip` to bring behavior in-line with other controls.
See original GitHub issueBackground and motivation
There have recently been a couple of issues asking for this feature.
Outline explaining the feature from associated blog post:
ToolStrip classes do not support “Click Through” between forms. For more information on what click through is, I recommend reading https://daringfireball.net/2003/05/interface_details_itunes_vs_safari . In Windows, pretty much all applications use “click through,” whereby if you have one window active and click on to another one, the mouse click activates the window and the click is processed by whatever control you had the mouse over.
API Proposal
public class ToolStrip
{
public bool ClickThrough=true;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (this.clickThrough &&
m.Msg == NativeConstants.WM_MOUSEACTIVATE &&
m.Result == (IntPtr)NativeConstants.MA_ACTIVATEANDEAT)
{
m.Result = (IntPtr)NativeConstants.MA_ACTIVATE;
}
}
}
API Usage
Enable/Disable the ClickThrough property to change the behavior.
Alternative Designs
default value of property set to false
Risks
If default is true, then behavior could change in existing applications.
Will this feature affect UI controls?
Yes. Toolstrip will allow click through by default or at least allow click through after the developer enables it.
Unsure on accessibility impact.
Feature is not localizable.
Issue Analytics
- State:
- Created 3 months ago
- Reactions:4
- Comments:9 (9 by maintainers)

Top Related StackOverflow Question
@elachlan you are the absolute best! Go ahead and put up a PR and we’ll review it before the API review so it’s a simple matter to get it in.
Based on the blog we should probably also add it for
MenuStrip.