如何将自定义控件设置为按钮或标签的工具提示?

时间:2017-03-07 10:40:02

标签: c# windows winforms tooltip custom-controls

我已经创建了自己的自定义控件,我需要将此自定义控件作为标签或按钮的工具提示。

但我找不到将自定义控件设置为工具提示的方法。

任何人都可以帮我设置自定义控件作为工具提示。

注意: 我不需要在控件的mouse_hover事件中显示自定义控件的解决方案。

请建议我以标准方式将自定义控件设置为默认工具提示。

此致

Amal Raj

1 个答案:

答案 0 :(得分:1)

我认为你已经知道重写油漆事件,所以我不会进入那个。如果你想要任何更复杂的东西,从ToolTip控件派生来为你的目的扩展它将没有多大意义,因为你会很快遇到限制。

你应该做的是通过重用原始的一些重要位来实现你自己的ToolTip控件。如果你喜欢冒险,你可以按照这些步骤开始。从现在开始,我将把你的自定义控件称为 tooltip

  1. 如果您想为使用工具提示的每个控件显示自定义文字或其他内容,则需要在班级中实施IExtenderProviderHere's更多信息。
  2. 您需要跟踪使用工具提示的控件以及您为其设置的自定义值。在内部,Windows窗体工具提示使用HashTable来实现此目的。关键是控件显示您的工具提示和值是工具提示文本(或者您希望与工具提示绑定的其他内容)。
  3. 如果您想要显示多个字符串(标题,说明,图像等),您可以拥有多个HashTable。
  4. 将工具提示添加到控件时,订阅鼠标事件(输入,移动,离开)以跟踪何时显示工具提示。如果您想在显示控件之前有延迟,则需要使用内部计时器来跟踪时间。
  5. 您很可能希望工具提示扩展到主窗体的边界之外。您可以将工具提示包装在无头形式或alpha blended form内,以允许除矩形之外的其他形状。
  6. 这些是非常普遍的第一步。实际上,还有很多工作要做。自从我实现自定义ToolTip控件以来已经有几年了,所以我可能会忘记一些至关重要的事情。但是,如果你花一些时间来探讨Windows Forms's ToolTip课程的代码,你会很清楚窗帘后面发生了什么。

    我自己没有审核过代码,但从评分来看,本文也会给你一个很好的起点:A ToolTip with Title, Multiline Contents, and Image。它位于VB.NET中,但您可以使用Telerik's converter或其他任何内容轻松将其转换为C#。