2008-10-21 5 views
1

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

я могу определить, текст, я хочу показать (используя хит тестирование с текущей позиции курсора мыши, и т.д.):

private void toolTip1_Popup(object sender, PopupEventArgs e) 
{ 
    if (e.AssociatedControl == listView1) 
    { 
     toolTip1.SetToolTip(listView1, "foo"); 
    } 
} 

, но любая попытка установить текст подсказки вызывает stackoverflow.

Как настроить подсказку (значок, название, текст) перед ее отображением?

ответ

2

Вам необходимо защитить свой код в обработчике событий Popup, так что если вы вызываете в него SetToolTip, вы не вызываете SetToolTip еще раз.

Что-то вроде:

private bool updatingTooltip; 
private void toolTip1_Popup(object sender, PopupEventArgs e) 
{ 
    if (!this.updatingTooltip && (e.AssociatedControl == listView1)) 
    { 
     this.updatingTooltip = true; 
     toolTip1.SetToolTip(listView1, "foo"); 
     this.updatingTooltip = false; 
    } 
} 
Смежные вопросы