【发布时间】:2013-12-02 13:21:52
【问题描述】:
所以我为我的自定义控件声明了 List 集合属性,当我尝试设置 DefaultValueAttribute 时,它没有编译错误:
属性参数必须是属性参数的常量表达式、typeof表达式或数组创建表达式 输入
.. 我/我做错了什么?
private List<Color> _gradientColorList = new List<Color>();
[CategoryAttribute("Appearance")]
[DefaultValueAttribute(new List<Color>(new Color[] { Color.FromArgb(116, 194, 225), Color.FromArgb(1, 145, 200), Color.FromArgb(0, 91, 154) }))]
public List<Color> GradientColorList
{
get
{
return _gradientColorList;
}
set
{
try
{
if (value == null)
throw new ArgumentNullException();
if (value == null || value.Count < 2)
throw new Exception("Gradient color list count is less than 2.");
_gradientColorList = value;
CreateGradientList(GradientColorList);
Invalidate();
}
catch (Exception exc)
{
ExcMessageBox(exc);
}
}
}
还有一个问题,当我在 Visual Studio 属性编辑器(颜色集合编辑器)中从 GradientColorList 集合属性中添加或删除颜色时,包含 try-catch 的 set 块不起作用,我不不知道为什么?如何解决?
【问题讨论】:
-
你能做的最糟糕的事情是在属性设置器中捕获异常以显示消息框。
标签: c# winforms list properties default-value