自定义控件的ToolTip求解决方案

时间:2023-01-29 12:23:27
为解决方案添加一个UserControl,在UserControl添加一个textBox,把textBox的Dock属性设置为Fill,其他任何东西都不用,代码也不用写,编译,自定义控件完;

在主窗体添加一个UserControl(刚刚定义好的),添加一个ToolTip组件用于为UserControl提示信息,并添加代码

private void userControl1_MouseMove(object sender, MouseEventArgs e)
        {
            this.toolTip1.SetToolTip((Control)sender, "1111111111111");
        }

或者
public Form1()
  {
  InitializeComponent();
  this.toolTip1.SetToolTip(userControl1, "Moving");
  this.toolTip1.ShowAlways = true;
  }


运行结果:userControl1没有提示信息,ToolTip组件失效,求高手指教。

10 个解决方案

#1


Tooltip本身就有问题的

#2


userControl1的load事件里写:
toolTip1.SetToolTip(this, "哈哈哈哈"); 
试过可以的!

#3


学习学习

#4


这个我知道,是把ToolTip组件放在自定义控件里嘛,但是不符合我的要求,我要求的是自定义控件里面只有一个textBox的喔
引用 2 楼 wangyue4 的回复:
userControl1的load事件里写:
toolTip1.SetToolTip(this, "哈哈哈哈"); 
试过可以的!

#5


你的textbox是不是把userControl1给全部覆盖了,那当然出不来了,你在textbox上设toolTip1不就完了

#6


引用 5 楼 wangyue4 的回复:
你的textbox是不是把userControl1给全部覆盖了,那当然出不来了,你在textbox上设toolTip1不就完了
嗯,你说得没错,我就是要把它覆盖,但是又不能在自定义控件里添加其他组件(因为添加的话,当使用很多个自定义控件实例就会出现浪费),其次,我试过用事件在textBox里设置,但是没用,用事件设置的代码如下:
 
public delegate void MouseMoveHandle(object sender, MouseEventArgs e);//写在自定义控件类外
public new event MouseMoveHandle MouseMove;
private void textBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (MouseMove != null)
            {
                MouseMove(this, e);
            }
        }

在主窗体的代码:
 private void userControl1_MouseMove(object sender, MouseEventArgs e)
        {
            this.toolTip1.SetToolTip((Control)sender, "Moving");
        }

#7


private void txt_MilePost_MouseUp(object sender, MouseEventArgs e)
        {
            if (!this.ReadOnly)
            {
                toolTip1.Show("欢迎加入IT技术群:34683253 " , "OK"); 
           }
        }

#8


toolTip1.SetToolTip(textbox, "哈哈哈哈"); 
在组建的load事件里加上这句不可以么

#9


这个肯定可以完成的,只是感觉累赘了点
引用 8 楼 wangyue4 的回复:
toolTip1.SetToolTip(textbox, "哈哈哈哈"); 
在组建的load事件里加上这句不可以么

#10


引用 8 楼 wangyue4 的回复:
toolTip1.SetToolTip(textbox, "哈哈哈哈"); 
在组建的load事件里加上这句不可以么


upup

#1


Tooltip本身就有问题的

#2


userControl1的load事件里写:
toolTip1.SetToolTip(this, "哈哈哈哈"); 
试过可以的!

#3


学习学习

#4


这个我知道,是把ToolTip组件放在自定义控件里嘛,但是不符合我的要求,我要求的是自定义控件里面只有一个textBox的喔
引用 2 楼 wangyue4 的回复:
userControl1的load事件里写:
toolTip1.SetToolTip(this, "哈哈哈哈"); 
试过可以的!

#5


你的textbox是不是把userControl1给全部覆盖了,那当然出不来了,你在textbox上设toolTip1不就完了

#6


引用 5 楼 wangyue4 的回复:
你的textbox是不是把userControl1给全部覆盖了,那当然出不来了,你在textbox上设toolTip1不就完了
嗯,你说得没错,我就是要把它覆盖,但是又不能在自定义控件里添加其他组件(因为添加的话,当使用很多个自定义控件实例就会出现浪费),其次,我试过用事件在textBox里设置,但是没用,用事件设置的代码如下:
 
public delegate void MouseMoveHandle(object sender, MouseEventArgs e);//写在自定义控件类外
public new event MouseMoveHandle MouseMove;
private void textBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (MouseMove != null)
            {
                MouseMove(this, e);
            }
        }

在主窗体的代码:
 private void userControl1_MouseMove(object sender, MouseEventArgs e)
        {
            this.toolTip1.SetToolTip((Control)sender, "Moving");
        }

#7


private void txt_MilePost_MouseUp(object sender, MouseEventArgs e)
        {
            if (!this.ReadOnly)
            {
                toolTip1.Show("欢迎加入IT技术群:34683253 " , "OK"); 
           }
        }

#8


toolTip1.SetToolTip(textbox, "哈哈哈哈"); 
在组建的load事件里加上这句不可以么

#9


这个肯定可以完成的,只是感觉累赘了点
引用 8 楼 wangyue4 的回复:
toolTip1.SetToolTip(textbox, "哈哈哈哈"); 
在组建的load事件里加上这句不可以么

#10


引用 8 楼 wangyue4 的回复:
toolTip1.SetToolTip(textbox, "哈哈哈哈"); 
在组建的load事件里加上这句不可以么


upup