C # Windows Form - задержка всплывающей подсказки не работает - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь включить задержку для всплывающей подсказки через OnMouseHover, но, похоже, она игнорирует мою указанную задержку (всплывающая подсказка отображается сразу после наведения, а не после задержки). Я подумал, что это будет простое изменение, но должно быть что-то, чего мне не хватает.

Я пытался настроить задержку, связанную с всплывающей подсказкой, но это не имело никакого эффекта. Я также включил только «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 голосов
/ 07 ноября 2019

Удалите функцию 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);
    }));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...