我在设置属性的默认值时遇到问题,每次在其中修改表单时,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 Designer中并且Designer被修改时(重新)设置我的(已经预先初始化):
MyHour myHour1 = new MyHour();
...
myPanel1.FirstHour = myHour1;
我希望它设置此(或者只是不要触摸此属性):
MyHour myHour1 = new MyHour("13:00");
...
myPanel1.FirstHour = myHour1;
答案 0 :(得分:4)
如果我正确理解了这个问题,您想知道VS设计师为什么不将该属性初始化为您使用DefaultValue
设置的内容?
DefaultValueAttribute
实际上并不会导致默认值为 set ,它只是告知设计者有关通常初始化对象的默认值,以便设计人员知道是否或者它是否已经被修改(即它是否需要序列化并且应该在属性网格中显示为粗体。)
要实际设置默认值,您需要在字段上使用初始值设定项或在默认(无参数)构造函数中设置值。
答案 1 :(得分:0)
即使不是“完全满意”的解决方案,这也是一个:
class MyPanel {
_FirstHour = new FirstHour("13:00");
[DefaultValue("13:00"),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
Hour FirstHour {get { return _FirstHour; } set{...}}
}
Designer不再触及FirstHour
属性。