Showing and disposing tooltip .NET

443 Views Asked by At

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?

2

There are 2 best solutions below

0
Essien On BEST ANSWER
 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)
     {
     }
  }
8
spmdc On

If I understand you correctly, you want to intercept the ItemHoverInputMode.HoveredItemChanged Event.

I have not tested this nor worked with yFiles before, but according to documentation this should work:

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

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

Then check the element in the event handler and display or hide the tooltip.