关于自定义控件中复杂属性的有关问题。
关于自定义控件中复杂属性的问题。。。。
今天写了个自定义控件,里面用到了Collection的属性。用起来都正常,但问题是
1、为该属性添加一个项后,在后台代码文件自动就声明了该对象[我看了MS自带的控件的类似属性如:DropDownList的Item属性 就不会添加这个,而且我手动把这个声明删除了后,程序没有什么影响]
2、就是运行一次后,在设计器再点击该属性,不能还原,即,我添加了2项,页面上也生成了相关的标签,但运行一次后,点击属性就看不到以前设置的了。
------解决方案--------------------
参考一下自定义控件属性设置:
/// <summary>
/// 获取子菜单集合
/// </summary>
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Description( "获取或设置下拉子菜单项集合 ")]
[Category( "杂项 ")]
[NotifyParentProperty(true)]
[TypeConverter(typeof(CollectionConverter))]
[DesignOnly(false)]
public PopupMenu Items
{
get
{
if (_Items == null)
{
_Items = new PopupMenu();
}
return _Items;
}
}
今天写了个自定义控件,里面用到了Collection的属性。用起来都正常,但问题是
1、为该属性添加一个项后,在后台代码文件自动就声明了该对象[我看了MS自带的控件的类似属性如:DropDownList的Item属性 就不会添加这个,而且我手动把这个声明删除了后,程序没有什么影响]
2、就是运行一次后,在设计器再点击该属性,不能还原,即,我添加了2项,页面上也生成了相关的标签,但运行一次后,点击属性就看不到以前设置的了。
------解决方案--------------------
参考一下自定义控件属性设置:
/// <summary>
/// 获取子菜单集合
/// </summary>
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Description( "获取或设置下拉子菜单项集合 ")]
[Category( "杂项 ")]
[NotifyParentProperty(true)]
[TypeConverter(typeof(CollectionConverter))]
[DesignOnly(false)]
public PopupMenu Items
{
get
{
if (_Items == null)
{
_Items = new PopupMenu();
}
return _Items;
}
}