C # подсказка не отображается достаточно долго - PullRequest
12 голосов
/ 22 ноября 2011

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

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

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

Ответы [ 5 ]

17 голосов
/ 22 ноября 2011

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

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

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

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

ToolTip tt = new ToolTip();
protected virtual void pictureBox_MouseHover(object sender, EventArgs e)
{
    tt.Show("Click 'LIVE ...", this.pictureBox, 10000);
}
4 голосов
/ 22 ноября 2011

Установить значение свойства AutoPopDelay

 tt.AutoPopDelay = 10000;
3 голосов
/ 03 сентября 2015

В отличие от ответа, описанного Джастином, мне не удалось отобразить всплывающую подсказку дольше 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");
}

Бонус:

private void someObjectName_MouseLeave(object sender, EventArgs e)
    {
        tt.Active = false;
    }
2 голосов
/ 22 ноября 2011

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

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

0 голосов
/ 20 июля 2017

Я нашел следующие шаги для меня:

Установите на 1/10 от желаемого .

Затем вы можете настроить и впоследствии.

MSDN Link

...