Всплывающая подсказка С# не отображается достаточно долго

У меня есть подсказка, которая появляется при наведении мыши на изображение:

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

Моя проблема в том, что мой текст довольно длинный, и всплывающая подсказка исчезает слишком быстро. Как я могу получить подсказку инструмента для отображения дольше?

Ответ 1

Установите AutoPopDelay свойство как нечто большее - по умолчанию оно составляет 5000 (5 секунд)

Обновление: Моя ошибка:

Максимальное время задержки всплывающего окна - 5000 миллисекунд. Для более длительной длительности используйте метод Show для управления точным моментом, когда отображается всплывающая подсказка.

Таким образом, вы не можете получить подсказку инструмента для отображения более 5 секунд с помощью этого метода - вместо этого вам нужно будет использовать Show, чтобы явно показывать подсказку, когда пользователь наводил курсор на изображение. Просто замените свой вызов на SetToolTip на один на Show в обработчике событий MouseHover:

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

Ответ 2

Задайте значение свойства AutoPopDelay

 tt.AutoPopDelay = 10000;

Ответ 3

В отличие от ответа, описанного Джастином, я не смог получить всплывающую подсказку для отображения дольше, чем 5 секунд, используя метод show.

Один из других зависаний, которые у меня были, это свойство AutomaticDelay. Короче говоря, если вы хотите, чтобы пользовательский AutoPopDelay выполнял не набор AutomaticDelay.

Установка этого свойства будет автоматически установлена ​​... см. MSDN:

AutoPopDelay = 10 x AutomaticDelay

InitialDelay = AutomaticDelay

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

Bonus:

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

Ответ 4

ToolTip.Show(text, [control], time in milliseconds) что вам нужно Я думаю

Это позволит вам отображать длинный текст для определенного количества миллисекунд. Кроме того, если текст слишком длинный, вы можете инертно NewLine находиться между текстом, чтобы его обернутый и не показанный как длинная всплывающая подсказка, охватывающая форму

Ответ 6

Что если я добавил текст всплывающей подсказки через ListviewItems, а подсказка внешнего инструмента не добавлена, как мы можем удерживать продолжительность отображения подсказки?