2010-06-02 96 views
7

我有一個具有引用類型屬性的用戶控件。 Windows窗體設計器不斷生成將屬性的初始值分配爲空的代碼。我怎樣才能防止這一點?如何防止Windows窗體設計器爲屬性生成默認值分配?

我試着添加重置和ShouldSerialize方法 - 重置有一個空的身體和ShouldSerialize總是返回false - 但沒有奏效。我也應用了BrowsableAttribute並將其設置爲false。

編輯:

屬性的類型是在同一個項目中的類。它不是一個組件或控件,只是從Object繼承的普通類。此外,該屬性的setter使用該屬性的值作爲參數來調用方法,並且該方法不接受null作爲有效參數。

例子:

public MyClass Property1 
{ 
    get { return _property1; } 
    set 
    { 
     _property1 = value; 
     SomeMethod(value); // This method throws ArgumentNullException; 
    } 
} 

注:我也知道get和set方法可能會更適合這裏。

+0

請添加一個例子。只是任何ref類型或組件/控件的引用? – 2010-06-02 21:08:04

+0

即使您沒有手動將默認設置爲NULL,對於ref類型,默認仍將隱式爲NULL。你期望它會是什麼? – 2010-06-02 21:39:24

+0

我假設Windows窗體設計器覆蓋您最初寫入控件的值? – Mike 2010-06-02 21:49:30

回答

18

Murky,我可以使用一個片段。告訴設計師,它不應該序列化財產的價值:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
    public Image Aardvark { get; set; } 
+0

+1我喜歡'網。 – 2011-07-20 15:44:17

+0

@Hans我們是否也可以爲某個屬性提供默認值並在設計器上呈現它? – Brij 2013-01-23 12:13:03

相關問題