我正在从ScrollableControl编写自定义TreeView。当鼠标悬停在文本太长而无法显示的节点上时,我决定显示工具提示。
我发现当显示工具提示时,用户无法单击节点来选择它,因为(我认为)他点击了工具提示窗口,而不是我的控件。
有没有简单的解决方案?到目前为止,我可以看到,System.Windows.Forms.TreeView没有这个问题。谢谢!
答案 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对鼠标是不可见的,导致任何鼠标事件传递到它下面的窗口。 (但只有两个窗口都来自同一个过程)