Как отобразить все всплывающие подсказки, которые уже связаны с элементами управления - PullRequest
2 голосов
/ 18 августа 2010

У меня есть форма с элементами управления и соответствующими подсказками. Я реализую кнопку помощи, которая должна показывать все подсказки одновременно.

Я хотел бы реализовать это как-то так:

private void btnHelp_Click(object sender, EventArgs e)
{
     System.Windows.Forms.Control.All.Show.Their.Tooltips();
}

Не могу найти простой способ сделать это: -)

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

UPD. Я начал реализовывать это с помощью этой функции:

  public void ShowControlsTooltip(System.Windows.Forms.Control c)
    {
        ttsToolTips.Show(ttsToolTips.GetToolTip(c), c, c.Location.X, c.Location.Y);
    }

Но я не могу заставить его показывать несколько всплывающих подсказок одновременно.

UPD2. Теперь у меня есть такой код, но все всплывающие подсказки все еще мигают и исчезают.

public void ShowControlsTooltip(System.Windows.Forms.Control c)
{
    ToolTip t = new ToolTip();
    //t = ttsToolTips;
    t.Show(ttsToolTips.GetToolTip(c), c, c.Location.X, c.Location.Y, 1000);
}

private void btnHelp_Click(object sender, EventArgs e)
{
    foreach (Control c in this.Controls)
    {
        try
        {
            ShowControlsTooltip(c);
        }
        catch 
        { 

        }
    }
}

С помощью ttsToolTips у меня уже есть все ассоциации подсказок.

UPD3. похоже, работает. Но координаты не точны.

Большой вопрос сейчас - как удалить все эти всплывающие подсказки одновременно?

1 Ответ

1 голос
/ 18 августа 2010
foreach(Control c in Form.Controls)
{
    string s  = Tooltip.GetTooltip(c);
    c.ShowTooltip(s,this);
}
...