C# Windows 窗体 - 工具提示延迟不起作用

C# Windows Form - ToolTip Delay doesn't work

我试图通过 OnMouseHover 为工具提示添加延迟,但它似乎忽略了我指定的延迟(工具提示在悬停时立即显示,而不是在延迟之后显示)。我认为这将是一个简单的更改,但一定有我遗漏的东西。

我试过配置与工具提示相关的延迟,但没有任何效果。我还只包含 "DDToolTip.AutomaticDelay = 5000",并删除了其他属性,但这似乎也没有改变任何内容。

我也试过用 DDToolTip.SetToolTip(this.Parent, strTooltip, strTooltip); 替换 DDToolTip.Show(strTooltip, this.Parent, pnt, 10000);,但这导致工具提示根本没有出现。

public DDButton()
        {
            InitializeComponent();

            DDToolTip = new ToolTip();
            DDToolTip.InitialDelay = 5000;
            DDToolTip.AutoPopDelay = 5000;
            DDToolTip.AutomaticDelay = 5000;
            DDToolTip.ReshowDelay = 5000;

            InitDefaults();
        }

        public DDButton(DDButton btnLastButton)
        {
            InitializeComponent();

            DDToolTip = new ToolTip();
            DDToolTip.InitialDelay = 5000;
            DDToolTip.AutoPopDelay = 5000;
            DDToolTip.AutomaticDelay = 5000;
            DDToolTip.ReshowDelay = 5000;
            InitDefaults();
        }

...

protected override void OnMouseHover(EventArgs e)
        {
            Point pnt = new Point();
            pnt.X = this.Left + this.Size.Width + 10;
            pnt.Y = this.Bottom + 10;

            String strTooltip = "";

            try
            {
                strTooltip = strTooltip.Trim('\n');
                DDToolTip.Show(strTooltip, this.Parent, pnt, 10000);

                base.OnMouseHover(e);
                Capture = false;
            }
            catch (Exception)
            {

            }
        }

我希望工具提示在鼠标悬停在按钮上指定时间后显示,而不是立即显示。

删除您的 OnMouseHover(EventArgs e) 函数。 您只需要:

toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1500;
toolTip1.AutomaticDelay = 1500;
toolTip1.ReshowDelay = 1500;

toolTip1.SetToolTip(myControl, "test");

如果你使用Show(),它会立即显示

或者你总是可以做这样疯狂的事情:

Task.Run(async () =>
{
    await Task.Delay(500);
    this.Invoke((Action)(() =>
    {
        toolTip1.Show("my text", myControl);
    }));
});