2017-06-20 82 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