deerchao
deerchao

Reputation: 10534

Tooltip steals mouse click

I'm writing a custom TreeView from ScrollableControl. I decided to show tooltips when the mouse hovers over nodes with text too long to display.

I find that when tooltips are shown, the user is not able to click the node to select it because (I think) he's clicking the tooltip window, not my control.

Is there any easy solutions? As far I can see, System.Windows.Forms.TreeView don't have this problem. Thanks!

Upvotes: 1

Views: 934

Answers (1)

SLaks
SLaks

Reputation: 887195

You need to override WndProc in your tooltip form and return HT_TRANSPARENT in response to the WM_NCHITTEST message.

For example:

protected override void DefWndProc(ref Message m) {
    switch (m.Msg) {
        case 0x84://WM_NCHITTTEST
            m.Result = new IntPtr(-1);  //HT_TRANSPARENT
            return;
    }
    base.DefWndProc(ref m);
}

This will make Windows believe that your from is invisible to the mouse, causing any mouse events to be passed to the window underneath it. (But only if both windows are from the same process)

Upvotes: 1

Related Questions