显示和处理工具提示 .NET
Showing and disposing tooltip .NET
我正在使用 yFiles.Net 组件来表示某些 SQL 数据库中对象之间的依赖关系(图形表示)。
我需要创建工具提示,当我将光标指向某个对象时它会出现。该工具提示不仅包含文本,还包含图像。我知道如何制作扩展默认工具提示 class 的自定义 class,然后覆盖绘制自定义工具提示的方法。
我不知道当我指向图形上的某个对象时如何显示工具提示,以及当我将光标从图形上的对象移开时如何处理它?有人可以帮我吗?
如果我没理解错的话,你想拦截
ItemHoverInputMode.HoveredItemChanged Event
.
我之前没有测试过这个也没有使用过 yFiles,但是根据 documentation 这应该可以工作:
// 'gc' is of type yWorks.yFiles.UI.GraphControl.
var ihim = new ItemHoverInputMode();
ihim.HoveredItemChanged += YourEvenHandler;
gc.InputModes.Add(ihim);
然后检查事件处理程序中的元素并显示或隐藏工具提示。
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)
{
}
}
我正在使用 yFiles.Net 组件来表示某些 SQL 数据库中对象之间的依赖关系(图形表示)。
我需要创建工具提示,当我将光标指向某个对象时它会出现。该工具提示不仅包含文本,还包含图像。我知道如何制作扩展默认工具提示 class 的自定义 class,然后覆盖绘制自定义工具提示的方法。
我不知道当我指向图形上的某个对象时如何显示工具提示,以及当我将光标从图形上的对象移开时如何处理它?有人可以帮我吗?
如果我没理解错的话,你想拦截
ItemHoverInputMode.HoveredItemChanged Event
.
我之前没有测试过这个也没有使用过 yFiles,但是根据 documentation 这应该可以工作:
// 'gc' is of type yWorks.yFiles.UI.GraphControl.
var ihim = new ItemHoverInputMode();
ihim.HoveredItemChanged += YourEvenHandler;
gc.InputModes.Add(ihim);
然后检查事件处理程序中的元素并显示或隐藏工具提示。
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)
{
}
}