我在設置屬性的默認值時遇到問題,每當窗體在其中被修改時都由Visual Studio Designer「更新」。設計器重置屬性值
現狀:
class MyHour {
MyHour() {}
MyHour(string h) {}
}
class MyPanel {
_FirstHour = new FirstHour("13:00");
[DefaultValue("13:00")]
Hour FirstHour {get { return _FirstHour; } set{...}}
}
當MyPanel是在VS設計,並且設計修改它(重新)將我(已經預初始化):
MyHour myHour1 = new MyHour();
...
myPanel1.FirstHour = myHour1;
我想它設置此(或只是不要觸摸此屬性):
MyHour myHour1 = new MyHour("13:00");
...
myPanel1.FirstHour = myHour1;
是的,我也從MSDN看到:「一個成員的默認值**通常是**它的初始值,一個可視化設計器**可以**使用默認值來重置成員的值代碼生成器**可以* *還使用默認值來確定是否應該爲成員生成代碼。「最後,「一個DefaultValueAttribute不會導致一個成員用屬性的值自動初始化,你必須在你的代碼中設置初始值。」我設置了,但設計師重新設置了它。 「初始化程序」是什麼意思? – serhio 2010-02-10 21:32:25
@serhio:字段初始值設定項將一個字段聲明爲'private string hour =「13:00」'。最後一部分是初始化程序。如果你不能這樣做(即你正在使用自動屬性),那麼你必須在構造函數中初始化它。 – Aaronaught 2010-02-11 03:02:10
我已經在MyObj中進行了初始化。我會更新代碼。我進行初始化,但設計師用新的(空的)「更新」我初始化的小時。 – serhio 2010-02-11 09:09:38