“拦截”任何工具提示appwide开放

时间:2009-07-01 08:14:07

标签: wpf tooltip

我想在状态栏中显示任何控件的工具提示文本,当工具提示即将打开时。

当然,我可以尝试以递归方式循环遍历主窗口的所有子控件 将他们的ToolTipOpening事件设置为始终相同的方法。但是有更简单的方法吗?

类似于Application.Current.AnyToolTipOpening事件?

2 个答案:

答案 0 :(得分:9)

当然,试试这个:

EventManager.RegisterClassHandler(typeof(FrameworkElement), FrameworkElement.ToolTipOpeningEvent, new ToolTipEventHandler(ToolTipHandler));

为从FrameworkElement派生的所有类注册一个处理程序。

您的处理程序方法可能如下所示:

   private void ToolTipHandler(object sender, ToolTipEventArgs e) {
        // To stop the tooltip from appearing, mark the event as handled
        e.Handled = true; 
        FrameworkElement source = e.Source as FrameworkElement; 
        if (source != null) {
            MessageBox.Show(source.ToolTip.ToString()); // or whatever you like
        }
    }

答案 1 :(得分:1)

谢谢,这很有效。此外,当鼠标通过工具提示离开控件时,使状态栏文本消失:

 EventManager.RegisterClassHandler(typeof(FrameworkElement),
                  MouseLeaveEvent, new MouseEventHandler(ClearText));