Всплывающая подсказка С# не отображается достаточно долго
У меня есть подсказка, которая появляется при наведении мыши на изображение:
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
находиться между текстом, чтобы его обернутый и не показанный как длинная всплывающая подсказка, охватывающая форму
Ответ 5
Я нашел следующие шаги для меня:
Установите automaticdelay до 1/10 из вашего желаемого autopopdelay.
Затем вы можете настроить initialdelay и reshowdelay.
Ссылка MSDN
Ответ 6
Что если я добавил текст всплывающей подсказки через ListviewItems, а подсказка внешнего инструмента не добавлена, как мы можем удерживать продолжительность отображения подсказки?