【问题标题】:Tooltip steals mouse click工具提示窃取鼠标点击
【发布时间】:2010-05-14 03:21:24
【问题描述】:

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

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

有没有简单的解决方案?据我所知, System.Windows.Forms.TreeView 没有这个问题。谢谢!

【问题讨论】:

    标签: winforms tooltip


    【解决方案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 对鼠标是不可见的,从而导致任何鼠标事件被传递到它下面的窗口。 (但前提是两个窗口都来自同一个进程)

    【讨论】:

    • 我正在使用 System.Windows.Forms.Tooltip 类来显示工具提示,似乎我无法覆盖工具提示窗口的 wndproc。
    • 我设法将自己的表单用作工具提示窗口。您的回答和stackoverflow.com/questions/156046/… 帮助很大。
    • 如果你使用 Tooltip 类,你根本不应该有这个问题。
    • 我在走上艰难的道路之前已经尝试过了,但是 Tooltip 类有它自己的问题。
    猜你喜欢
    • 2012-04-13
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多