显示和处理工具提示.NET

时间:2017-06-20 09:58:55

标签: c# .net tooltip yfiles

我正在使用yFiles.Net组件,我用它来表示某些SQL数据库中对象之间的依赖关系(图形表示)。

我需要创建工具提示,当我将光标指向某个对象时会出现该工具提示。该工具提示不仅包含文本,还包含图像。我知道如何创建自定义类,扩展默认的Tooltip类,然后覆盖绘制自定义工具提示的方法。

我不知道的是当我指向图形上的某个对象时如何显示工具提示,以及当我从图形上的对象移动光标时如何处理它?请有人帮我这个吗?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你想拦截 ItemHoverInputMode.HoveredItemChanged Event

我之前没有对此进行过测试,也没有使用yFiles,但根据documentation这应该有效:

// 'gc' is of type yWorks.yFiles.UI.GraphControl.  

var ihim = new ItemHoverInputMode(); 
ihim.HoveredItemChanged += YourEvenHandler;
gc.InputModes.Add(ihim);

然后检查事件处理程序中的元素并显示或隐藏工具提示。

答案 1 :(得分:0)

 private CustomTooltip m_tooltip;
 private MouseHoverInputMode m_mouseHoverMode;

 private void SetupToolTips(GraphEditorInputMode mode)
    {

        m_tooltip = new CustomTooltip(m_model.TooltipImages);

        ItemHoverInputMode itemHoverMode = new ItemHoverInputMode();
        itemHoverMode.HoverItems = GraphItemTypes.Node | GraphItemTypes.Edge;
        mode.ItemHoverInputMode = itemHoverMode;

        m_mouseHoverMode = new MouseHoverInputMode(m_tooltip, textProvider);
        mode.MouseHoverInputMode = m_mouseHoverMode;
        mode.ItemHoverInputMode.HoveredItemChanged += new EventHandler<HoveredItemChangedEventArgs>(ToolTipEvent);
    }

    private void ToolTipEvent(object sender, HoveredItemChangedEventArgs e)
    {
        m_tooltip.Item = e.Item; 
    }

    private void textProvider(object sender, ToolTipQueryEventArgs e)
    {
        if (m_tooltip.Item is INode || m_tooltip.Item is IEdge)
        {
            e.ToolTip = " ";
        }
    }

 public class CustomTooltip : ToolTip
  {
    private void OnPopup(object sender, PopupEventArgs e)
     {
     }
    private void OnDraw(object sender, DrawToolTipEventArgs e)
     {
     }
  }