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

时间:2019-11-07 19:35:44

标签: c# winforms tooltip

我正在尝试通过OnMouseHover合并ToolTip的延迟,但是它似乎忽略了我指定的延迟(ToolTip在悬停时立即显示,而不是在延迟后显示)。我认为这将是一个简单的更改,但是必须缺少一些内容。

我尝试配置与ToolTip相关的延迟,但是没有任何效果。我还仅添加了“ DDToolTip.AutomaticDelay = 5000”,并删除了其他属性,但似乎也没有任何改变。

我也尝试用DDToolTip.Show(strTooltip, this.Parent, pnt, 10000);替换DDToolTip.SetToolTip(this.Parent, strTooltip, strTooltip);,但这导致工具提示根本不显示。

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)
            {

            }
        }

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

1 个答案:

答案 0 :(得分:0)

删除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);
    }));
});