使用箭头创建自定义工具提示

时间:2013-02-18 12:53:58

标签: c# .net vb.net tooltip

是否可以使用箭头创建自定义控件,使其看起来像这样: enter image description here

我唯一的问题是创建箭头,因为控件的内容很容易插入。

我找到的最接近的是:http://www.componentone.com/SuperProducts/SuperTooltipWinForms/但我不想使用预先构建的控件,而且它是共享软件。

感谢。

2 个答案:

答案 0 :(得分:0)

工具提示是ContentControl,这意味着他们可以接受任何单个对象(例如StackPanel),所以是的,这是可能的。

我可能会考虑在没有填充/边距的StackPanel中添加三角形ShapeGrid / StackPanel,因此两者一起运行。在内部网格/ StackPanel内部,根据任何正常的施工作业,放置TextBox es,TextBlockLabel或您的内容。 MS'Tooltip page给出了一个图像示例(靠近页面底部)。

或者,您可以使用ControlTemplate

自定义工具提示

编辑:刚刚注意到你在WinForms领域。这适用于WPF。我不确定分享了多少。

答案 1 :(得分:0)

我发现最简单的方法是使用带有三角形图像画笔的矩形。这很容易。我正在弄清楚自己还有两个问题,那些是:

  1. 定位箭头使其直接位于目标对象下方。使用我在此处找到的解决方案可以部分解决这个问题:How to position tooltip bottom center。但是,它不会移动箭头,而是移动工具提示本身。您可以在中心水平对齐箭头,但如果工具提示没有足够的空间居中,则箭头不会直接显示在目标对象下。
  2. 在展示位置关闭时将箭头显示在“工具提示”框上方,在展示位置启用时将其显示在下方。例如,为了容纳自由空间,工具提示可以出现在目标上方而不是在其下方。您可以使用触发器来控制元素所在的行,假设ToolTip布局是网格,并且这些是您希望支持的唯一放置位置。
  3. 我还没有测试过添加阴影,但是如果你没有显示,你可以尝试在ToolTip父边框上添加一个边距(没关系,因为它永远不会与任何东西发生冲突)。

    对于带有图像画笔的矩形,您可以参考我在CodeProject上写的文章(这很简单)。

    http://www.codeproject.com/Articles/1103396/Image-Controls-Using-Dynamic-Colors

    enter image description here

    此示例中的工具提示正在被切断,因为它位于窗口的最边缘。 ToolTip目标应该是加号图标,但它的位置被推向右侧。理想情况下,我们想要一种方法将箭头向后移动,使其直接位于下方。我编辑了示例图片以显示理想的结果:

    enter image description here

    作为旁注,如果箭头需要边框,则可以将矩形与路径对象交换。您只需要知道要绘制的路径:p