2011-05-05 120 views
3

我正在嘗試以編程方式爲窗體內的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); 
     } 

任何幫助將不勝感激。

+0

我按照您的描述創建了一個控件,並且無法重現該錯誤。我的Vista在64位上工作。 – Sisyphus 2011-05-05 20:33:13

回答

2

您可以嘗試手動顯示工具提示。使用這樣的代碼是這樣的:

ToolTip tt = null; 

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

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

粗體代碼是我的補充和/或修改。

+0

感謝您的回覆。這不會工作,不幸的是 – user740327 2011-05-05 18:39:48

+1

我不認爲我得到你。你有沒有嘗試過,它不起作用,或者你剛剛結束沒有嘗試它不會工作。以防萬一英語不是你的第一語言......'不會'/'不能'意味着甚至在你嘗試之前就不會有事情發生; 「沒有」意味着在嘗試後沒有發生什麼事情。 – 2011-05-05 19:10:02

+0

對不起,我的意思是我試了一下,但沒有奏效。 – user740327 2011-05-05 19:25:37

0

最有可能的是,ToolTip對象在Click事件之後超出範圍。您是否可以嘗試在Click事件之外聲明:

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