'C# tooltip doesn't display long enough
I have a tooltip that is appearing on mouse hover on an image:
ToolTip tt = new ToolTip();
protected virtual void pictureBox_MouseHover(object sender, EventArgs e)
{
tt.InitialDelay = 0;
tt.SetToolTip(this.pictureBox, "Click 'LIVE ...");
}
My problem is that my text is rather long, and the tooltip disappears too fast. How can I get the tool tip to be displayed for longer?
Solution 1:[1]
Set the value of AutoPopDelay property
tt.AutoPopDelay = 10000;
Solution 2:[2]
Unlike the answer described by Justin, I was not able to get the ToolTip to display for longer than the 5 seconds using the show method.
One of the other hangups I was having was the AutomaticDelay property. Long story short - if you want custom AutoPopDelay do not set AutomaticDelay.
Setting this property will automatically set... see MSDN:
AutoPopDelay = 10 x AutomaticDelay
InitialDelay = AutomaticDelay
ReshowDelay = (0.2) x AutomaticDelay
Here's code that worked for me:
ToolTip tt = new ToolTip();
private void someObjectName_MouseHover(object sender, EventArgs e) {
tt = new ToolTip
{
AutoPopDelay = 15000, // Warning! MSDN states this is Int32, but anything over 32767 will fail.
ShowAlways = true,
ToolTipTitle = "Symbolic Name",
InitialDelay = 200,
ReshowDelay = 200,
UseAnimation = true
};
tt.SetToolTip(this.someObjectName, "This is a long message");
}
Bonus:
private void someObjectName_MouseLeave(object sender, EventArgs e)
{
tt.Active = false;
}
Solution 3:[3]
ToolTip.Show(text, [control], time in milliseconds) is what you need i think
This will let you display your long text for a specific number of milliseconds. Also if you text is too long then you could inert NewLine in between the text so that its wrapped up and not shown as a long tooltip spanning across the form
Solution 4:[4]
I've found the following steps work for me:
Set the automaticdelay to 1/10 of your desired autopopdelay.
Then you can adjust your initialdelay and your reshowdelayafterwards.
Solution 5:[5]
Doesn't seem to be mentioned. Setting ToolTipService.ShowDuration="20000" on the parent works for me. MSDN doesn't say but it's in milliseconds.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Serghei |
| Solution 2 | Community |
| Solution 3 | |
| Solution 4 | Joel |
| Solution 5 | LueTm |
