【问题标题】:C# tooltip doesn't display long enoughC# 工具提示显示时间不够长
【发布时间】:2022-02-18 20:58:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# winforms tooltip


    【解决方案1】:

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

    更新:我的错误:

    您可以延迟弹出窗口的最长时间为 5000 毫秒。对于较长的持续时间,请使用 Show 方法来控制显示工具提示的确切时间。

    因此,使用此方法您不能让工具提示显示超过 5 秒 - 相反,当用户将鼠标悬停在图片框上时,您需要使用 Show 显式显示工具提示。只需在您的MouseHover 事件处理程序中将您对SetToolTip 的调用替换为对Show 的调用:

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

    【讨论】:

    • 想同一个。或者只是尝试将ShowAlways 设置为true 作为解决方法。
    • +1 好的直接答案并列出默认值是什么。
    • @Justin - 事实证明,尽管有文档,但没有什么能阻止您设置更长的延迟,而且它确实有效。我只是将它设置为 20,000 毫秒,并且它保持了那么长时间。 [使用 .NET 3.5] StackOverflow 用户“Panny”发现可以设置的最大延迟为 32,767 毫秒,这是由于 16 位带符号的 int 问题等等。
    • @ManEatingCheese:不敢相信——你是对的。将 AutoPopDelay 设置为 32767 确实将消息保留了近 33 秒。从中创建一个答案。
    • @ManEatingCheese 哇。感谢那。他们为什么要使用 16 位 int 呢?太傻了……
    【解决方案2】:

    设置 AutoPopDelay 属性的值

     tt.AutoPopDelay = 10000;
    

    【讨论】:

      【解决方案3】:

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

      我遇到的其他问题之一是 AutomaticDelay 属性。长话短说 - 如果您想要自定义 AutoPopDelay,请设置 AutomaticDelay

      设置此属性将自动设置...see MSDN:

      AutoPopDelay = 10 x 自动延迟

      InitialDelay = 自动延迟

      重新显示延迟 = (0.2) x 自动延迟

      这是对我有用的代码:

      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");
      }
      

      奖金:

      private void someObjectName_MouseLeave(object sender, EventArgs e)
          {
              tt.Active = false;
          }
      

      【讨论】:

        【解决方案4】:

        ToolTip.Show(text, [control], time in milliseconds) 我认为是what you need

        这将使您可以在特定的毫秒数内显示长文本。此外,如果您的文本太长,那么您可以在文本之间插入 NewLine,以便将其包裹起来并且不会显示为跨越表单的长工具提示

        【讨论】:

          【解决方案5】:

          我发现以下步骤对我有用:

          设置为所需 的1/10。

          然后你可以调整你的和你的afterwards。

          MSDN Link

          【讨论】:

            【解决方案6】:

            似乎没有提到。在父级上设置ToolTipService.ShowDuration="20000" 对我有用。 MSDN 没有说,但它以毫秒为单位。

            【讨论】:

              猜你喜欢
              • 2014-10-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-05-19
              • 2019-11-08
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多