【发布时间】:2012-10-14 18:41:33
【问题描述】:
我正在创建一个类似于日历的控件,并且我希望用户设置他们想要查看的年份。 但如果不是,则 SelectedYear 的属性必须是实际年份。
我尝试像这样设置这个默认值:
[DefaultValue(DateTime.Today.Year)]
public int SelectedYear{
get{
return _selYear;
}
set{
_selYear = value;
UpdateCalendar();
}
}
我收到以下错误
An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type
【问题讨论】:
-
这不是该属性的用途。在类的默认 ctor 中设置默认属性值是一种常见的选择。
-
这是设计器默认值,意味着如果控件具有给定的年份值,则该值在属性窗口中不会加粗。它不会影响属性值。
-
如果您正在构建一个控件,那么我相信在构造函数中设置默认值将是一个好地方。
-
您应该使用
AmbientValueAttribute类来定义一个值,当设置为属性时,该值实际上表示当前日期...看看我的答案。此外,这为设计者提供了有关控件如何工作的线索。
标签: c#