Проблема с подсказкой - PullRequest
3 голосов
/ 05 мая 2011

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

Следующий код взят из кнопки на пользовательском элементе управления, которая находится в главной форме.

   private void button1_Click(object sender, EventArgs e)
        {
            Label lblTest = new Label();
            lblTest.Text = "Test";
            ToolTip tt = new ToolTip();
            tt.SetToolTip(lblTest, "ToolTipTest");
            this.Controls.Add(lblTest);
            lblTest.Location = new Point(10, 10);
        }

Любая помощь будет высоко ценится.

Ответы [ 2 ]

2 голосов
/ 05 мая 2011

Вы можете попробовать показать подсказку вручную.Используйте этот код следующим образом:

<b>ToolTip tt = null;</b>

private void button1_Click(object sender, EventArgs e)
{
    Label lblTest = new Label();
    lblTest.Text = "Test";
    <b>tt = new ToolTip();</b>
    this.Controls.Add(lblTest);
    <b>lblTest.MouseHover += new EventHandler(label_Hover);</b>
    lblTest.Location = new Point(10, 10);
}

<b>private void label_Hover(object sender, EventArgs e)
{
    tt.Show((Label)sender, "Tooltip");
}</b>

Код, выделенный жирным шрифтом, - мои дополнения и / или модификации.

0 голосов
/ 27 августа 2011

Скорее всего, объект ToolTip выходит из области видимости после события Click.Можете ли вы попытаться объявить его вне вашего события клика:

ToolTip tt = new ToolTip();
private void button1_Click(object sender, EventArgs e) 
{  
   // and so on...
...