C#工具提示显示的时间不够长

BuZ*_*uZz 13 c# tooltip winforms

我有一个工具提示出现在鼠标悬停在图像上:

ToolTip tt = new ToolTip();
protected virtual void pictureBox_MouseHover(object sender, EventArgs e)
{
    tt.InitialDelay = 0;
    tt.SetToolTip(this.pictureBox, "Click 'LIVE ...");
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我的文字很长,工具提示消失得太快.如何让工具提示显示更长时间?

Jus*_*tin 17

AutoPopDelay属性设置为更高的值 - 默认为5000(5秒)

更新:我的错误:

延迟弹出窗口的最长时间是5000毫秒.对于较长的持续时间,请使用Show方法控制显示工具提示的确切时刻.

因此,使用此方法无法使工具提示显示超过5秒 - 相反,当用户将鼠标悬停在图片框上时,您需要使用"显示"来明确显示工具提示.只需更换您的来电SetToolTip与一个Show在你的MouseHover事件处理程序:

ToolTip tt = new ToolTip();
protected virtual void pictureBox_MouseHover(object sender, EventArgs e)
{
    tt.Show("Click 'LIVE ...", this.pictureBox, 10000);
}
Run Code Online (Sandbox Code Playgroud)

  • @Justin - 尽管有文档证明,没有什么可以阻止你设置更长的延迟,它确实有效.我把它设置为20,000毫秒,并且它保持了那么久.[使用.NET 3.5]名为"Panny"的StackOverflow用户发现可以设置的最大延迟是32,767毫秒,这是由于16位有符号的int问题等等. (11认同)

小智 6

与 Justin 描述的答案不同,我无法使用该show方法让 ToolTip 显示超过 5 秒。

我遇到的其他问题之一是AutomaticDelay物业。长话短说-如果你想定制AutoPopDelay没有设置AutomaticDelay

设置此属性将自动设置...参见 MSDN

AutoPopDelay = 10 x 自动延迟

初始延迟 = 自动延迟

ReshowDelay = (0.2) x AutomaticDelay

这是对我有用的代码:

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");
}
Run Code Online (Sandbox Code Playgroud)

奖金:

private void someObjectName_MouseLeave(object sender, EventArgs e)
    {
        tt.Active = false;
    }
Run Code Online (Sandbox Code Playgroud)


Ser*_*hei 5

设置AutoPopDelay属性的值

 tt.AutoPopDelay = 10000;
Run Code Online (Sandbox Code Playgroud)