WinForms: как настроить всплывающую подсказку, когда она будет отображаться? - PullRequest
1 голос
/ 21 октября 2008

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

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

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

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

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

1 Ответ

2 голосов
/ 21 октября 2008

Вам нужно защитить свой код в обработчике событий 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;
    }
}
...