“拦截”的任何提示appwide开幕(“Intercept” the opening of any

2019-09-17 09:22发布

我想显示状态栏在我的WPF应用程序的任何控制的工具提示文本,当提示即将被打开。

当然,我可以通过递归主窗口的所有子控件尝试循环并设置其ToolTipOpening事件总是相同的方法。 但有一个更简单的方法?

就像一个Application.Current.AnyToolTipOpening事件?

Answer 1:

当然,试试这个:

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


Answer 2:

谢谢,这工作。 此外,为了使当鼠标离开与工具提示控件的状态栏文字消失:

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


文章来源: “Intercept” the opening of any tooltip appwide
标签: wpf tooltip