0

在Visual Studio 2008中,當我添加一些控件以形成設計器時,會自動創建一些關於控件屬性的代碼。現在,我使用我自己的用戶控件,並將它們添加到窗體中,設計人員再次自動創建代碼行,在這種情況下,屬性FONT是我不希望設計人員將其添加的那些屬性之一覆蓋上層的字體設置。任何人都知道我可以設置哪些屬性在設計器中設置?如何停止Visual Studio爲設計器中的控件生成屬性設置?

回答

0

如果設計者確定該值與DefaultValue [Attribute]不同,設計者只會添加一行代碼來更改屬性的值。

如果您的自定義控制要改變字體屬性的默認值是什麼(或任何其他基類屬性),您必須執行一點點魔力:

public class MyControl : Control 
{ 
    public MyControl() 
    { 
     base.Font = new Font("Arial", 9.75f); 
    } 

    [DefaultValue(typeof(Font), "Arial, 9.75pt")] 
    public new Font Font 
    { 
     get { return base.Font; } 
     set { base.Font = value; } 
    } 
} 

公告的「新」字體屬性的關鍵字?字體不是虛擬的,所以你不能覆蓋它,我們不想這樣做。你重寫以改變行爲。我們不想改變行爲(這就是爲什麼代碼只是重定向回基地),我們只是想公開一個新的DefaultValue。這會誘使設計人員考慮控制的新默認設置。

我們還確保我們的Font屬性在構造時具有該值。

相關問題