2010-06-10 37 views
0

當您從工具箱向表單添加標籤時,其文本默認爲該項目的名稱(label1label2等)。如何使用自定義控件來實現這一點?到目前爲止,我有以下的,這讓我通過屬性窗口中更改文本:如何在設計時將Text屬性初始化爲對象名稱?

private string _text; 

[BrowsableAttribute(true)] 
public override string Text 
{ 
    get { return _text; } 
    set 
    { 
     _text = value; 
     lblID.Text = _text; 
    } 
} 

顯然,上面的代碼工作原樣,但我不知道爲什麼。 Text是否自動默認爲對象的名稱?該問題仍然代表其他不覆蓋Text的屬性。

回答

0

顯然,當你從UserControl繼承Text屬性被自動設置爲對象的名稱。以下代碼的工作原理如下:

public partial class CustomControl: UserControl 
{ 
    public string Extension { get; set; } 

    private string _text; 

    [BrowsableAttribute(true)] // Initializes to "customControlN" 
    public override string Text 
    { 
     get { return _text; } 
     set { _text = value; } 
    } 
} 
+1

這是因爲你正在使用默認的設計器,這是對Text屬性。幾乎所有的控件都使用默認的設計器(或其子類)。如果你反彙編Label類,你會在頂部看到:'Designer(「System.Windows.Forms.Design.LabelDesigner,System.Design,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a」)',LabelDesigner類子類ControlDesigner,它是使用Text屬性的ControlDesigner。 – 2010-06-10 17:24:41

0
private string _text = "default value" 
0

查找到System.ComponentModel.DefaultValueAttribute

+1

標籤對「label1」,「label2」的處理能力是通過其設計者來處理的。你可以在這裏獲得有關信息:http://support.microsoft.com/kb/813808 – 2010-06-10 17:12:45