工具提示窃取鼠标点击

时间:2010-05-14 03:21:24

标签: winforms tooltip

我正在从ScrollableControl编写自定义TreeView。当鼠标悬停在文本太长而无法显示的节点上时,我决定显示工具提示。

我发现当显示工具提示时,用户无法单击节点来选择它,因为(我认为)他点击了工具提示窗口,而不是我的控件。

有没有简单的解决方案?到目前为止,我可以看到,System.Windows.Forms.TreeView没有这个问题。谢谢!

1 个答案:

答案 0 :(得分:1)

您需要在工具提示表单中覆盖WndProc并返回HT_TRANSPARENT以回复WM_NCHITTEST消息。

例如:

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);
}

这将使Windows相信您的from对鼠标是不可见的,导致任何鼠标事件传递到它下面的窗口。 (但只有两个窗口都来自同一个过程)