2017-06-20 58 views
0

我正在使用yFiles.Net组件来处理某些SQL数据库(图形表示)中对象之间的依赖关系。显示和处理工具提示.NET

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

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

+0

只需要注意,只要您评估yFiles,您就有权获得yWorks的免费支持。尽管我们中的一些人也习惯性地使用堆栈溢出,但它仍然不是支持的首选方式(主要是因为yFiles远小于人们询问的其他库,所以yFiles的问题往往在这里一直没有答案)。在这里询问没什么不妥,但要知道它可能不如问我们的支持那么有帮助。 – Joey

回答

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

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

+0

在发布问题之前,我完全按照这种方式使用,但它不适用于我。我相信答案是使用MouseHoverInputMode – Essien

+0

如果您已经尝试过,您可能希望将这些信息包含在您的问题中,并进一步解释此方法的问题。即“你期望什么?那实际的行为是什么?” – spmdc

+0

是的,这是我的不好,我应该在我的问题中包含这些信息。我希望在我悬停对象时显示工具提示,并且仅当我单击对象时才显示工具提示。我相信HoveredItemChanged事件仅在某些悬停项目发生更改(单击)时才会调用。 – Essien