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