Search code examples
c#.nettooltipyfiles

Showing and disposing tooltip .NET


I am working with yFiles.Net component which I use for representing dependencies between objects in some SQL database (graph representation).

I need to create tooltip which will appear when I point cursors on some object. That tooltip not contains just text, it contains images also. I know how to make custom class which extends default Tooltip class and then to override methods for drawing custom tooltips.

What i do not know is how to show tooltip when I point on some object on graph, and how to dispose it when I move cursor from object on graph? Can someone help me with this please?


Solution

  •  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)
         {
         }
      }