C# Windows Forms画面でコントロールにカーソル当てた際、動的にツールチップの出力内容を変更したい。


タイトルの件、TextBox、ComboBox、Label、Buttonの部品にマウスカーソルを  
当てた際に、現在表示しているTextの内容をツールチップで表示したいと  
考えております。  
もちろん、TextBoxやComboBoxのTextの内容が変わったら、変わった後の  
内容をツールチップで表示したいです。

画面をLoadした際にツールチップを指定すると、あとでTextの内容を  
変更した場合に追従してくれないため、何かうまい手はないかと考えております。

このあたりのノウハウをお持ちの方がおりましたらご教示頂きたく  
よろしくお願いいたします。




Load時にツールチップを表示したいコントロールに設定。  
Popupイベントが発生した時に表示したいテキストに差し替えることで、その時のTextをツールチップ表示できます。

[code]

    private void Form1_Load(object sender, EventArgs e)
    {
        // とりあえずツールチップが出るようにしてpopupイベントを発生させる
        string caption = "dummy";
        this.toolTip1.SetToolTip(this.textBox1, caption);
        this.toolTip1.SetToolTip(this.comboBox1, caption);
        this.toolTip1.SetToolTip(this.label1, caption);
        this.toolTip1.SetToolTip(this.button1, caption);
    }
    
    // popupイベント時にツールチップのテキストを更新
    private void toolTip1_Popup(object sender, PopupEventArgs e)
    {
        string text = null;
        if (e.AssociatedControl is TextBox)
        {
            text = ((TextBox)e.AssociatedControl).Text;
        }
        else if (e.AssociatedControl is Button)
        {
            text = ((Button)e.AssociatedControl).Text;
        }
        else if (e.AssociatedControl is Control)
        {
            text = ((Control)e.AssociatedControl).Text;
        }
    
        if (string.IsNullOrEmpty(text))
        {
            //SetToolTipで""をセットするとpopupイベントが発生しなくなってしまうため空文字列以外を使う
            text = " ";
        }
        toolTip1.SetToolTip(e.AssociatedControl, text);
    }
    
[/code]




以下のようなコードじゃだめなのでしょうか?

[code]

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        toolTip1.SetToolTip(textBox1, textBox1.Text);
    }
    
[/code]

