2011-06-08 36 views
1

我有一個帶有一些標籤的表單。 不時程序改變與檢測標籤中的更改

label1.Text = "some message" 

我想創建一個執行的每個標籤文本分配時間和實施的事件處理這樣的功能標籤上的文字:

this.label1.TextChanged += new System.EventHandler(this.label1_TextChanged); 
    [...]  

    private void label1_TextChanged(object sender, EventArgs e) { 
     // do some stuff 
    } 

只要文字真的改變了,這就可以正常工作。但是,如果文本設置爲已有的相同值,則該事件不會執行。是否有一種簡單的方法將函數掛接到文本分配中,而不會將label1.Text = ...的每次出現都更改爲自定義函數調用?

回答

4

Control's Text property是虛擬的,因此您可以創建自己的標籤控件並在其中添加自定義功能,例如在調用屬性設置器時引發事件,即使它不會導致更改的文本也會被調用。

0

通過屬性設置標籤文本每次程序設置它的值時,它會調用你將在屬性中定義的函數。

public string LabelText 
{ 
    set 
    { 
    label1.Text = value; 

    // your Function Calling 

    } 
} 
+0

這將需要重寫文本分配,這是我想避免的每個實例。 dkackman的解決方案對我來說最合適,因爲我可以不改變原始格式,除非將Label重新聲明爲MyLabel – grimmig 2011-06-09 08:02:11