为自定义用户控件创建工具提示

8
我需要了解如何在自定义的UserControl中使用ToolTip。在窗体上创建ToolTip并通过SetToolTip将其分配给特定控件显然行不通。
我需要为自定义的UserControl提供哪些属性才能将ToolTip文本分配给它?我需要在usercontrol表单上添加一个ToolTip吗?我该如何实现这一点?
请为我提供代码示例或其他可视化内容。
谢谢!

你目前有什么进展?还有,你说的“不起作用”是什么意思? - MethodMan
UserControl 需要自行处理工具提示。 - Hans Passant
我创建了一个ToolTip并将其放置到我的UserControl中。问题是找到正确的Get Set值,以便将值传递给ToolTip。 - Encryption
你是在为UserControl中的每个项目寻找提示工具,还是只为整个UserControl寻找一个提示工具? - John Arlen
用户控件中只有一个项目,即文本框。该用户控件仅包含两个项目,即文本框和标签。标签对我不重要,只关注文本框。 - Encryption
3个回答

9

在您的用户控件上放置工具提示(使用设计器,就像在窗体上放置一样),并添加一个公共属性到您的用户控件中,例如:

    public string TextBoxHint
    {
        get 
        { 
            return toolTip1.GetToolTip(textBox1); 
        }
        set
        {
            toolTip1.SetToolTip(textBox1, value);                
        }
    }

啊,谢谢。我差不多到那个程度了,但是 Get 和 Set 没有完全正确。脑力透支了。 - Encryption
1
@igbylargeman,我们能否将工具提示设置为用户控件?我无法使其正常工作。我的做法是toolTip1.SetToolTip(this, value); - Dimuth Ruwantha

0

这是实现序列化工具提示属性的正确方法:

public partial class YourControlClass : UserControl
    {
    // Serialized property.
    private ToolTip toolTip = new System.Windows.Forms.ToolTip();

    // Public and designer access to the property.
    public string ToolTip
        {
        get
            {
            return toolTip.GetToolTip(this);
            }
        set
            {
            toolTip.SetToolTip(this, value);
            }
        }

0
  1. 在用户控件中创建 SetToolTip 方法,并为每个用户控件的子控件设置工具提示:

     public partial class SomeUserControl : UserControl
     {
         public void SetToolTip(ToolTip toolTip)
         {
             string text = toolTip.GetToolTip(this);
    
             toolTip.SetToolTip(subControl1, text);
             toolTip.SetToolTip(subControl2, text);
             // ...
         }
     }
    
  2. 在父控件设计器中为用户控件实例设置工具提示文本。这将添加到 .designer 文件中:

     this.toolTip1.SetToolTip(this.someUserControl1, "Some text.");
    
  3. 从父控件的构造函数中使用 ToolTip 父控件实例调用用户控件实例的 SetToolTip 方法:

     public partial class ParentForm : Form
     {
         public ParentForm()
         {
             InitializeComponent();
    
             someUserControl1.SetToolTip(toolTip1);
         }
     }
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接