当前位置:编程学习 > C#/ASP.NET >>

在UserControl中如何使用Collection集合属性以及CollectionEditor集合编辑器

想在UserControl中使用Collection集合属性以及CollectionEditor集合编辑器,同样的写法,在webcontrol(继承自WebControl类)中正确,但是在UserControl(继承自System.Web.UI.UserControl)不能用,集合属性不显示。
各位老大,谁有例子及解决方法? --------------------编程问答-------------------- 顶一下 --------------------编程问答-------------------- 似乎不支持 --------------------编程问答-------------------- 再加上一个类,然后继承 System.Collections.CollectionBase 就是了 --------------------编程问答-------------------- 不期望想当然的回答 --------------------编程问答-------------------- 想在UserControl中使用Collection集合属性以及CollectionEditor集合编辑器,同样的写法,在webcontrol(继承自WebControl类)中正确
-----------------
你在WebControl里面怎么用的?说说看 --------------------编程问答-------------------- 首先有一个基本的User类,主要包含name、address、phone等属性;
然后再集成自webconstrol的类中建立了以下属性:
private ArrayList UserList;

        [
        Category("Behavior"),
        Description("The User collection"),
        DesignerSerializationVisibility(
            DesignerSerializationVisibility.Content),
        Editor(typeof(ContactCollectionEditor), typeof(UITypeEditor)),
        PersistenceMode(PersistenceMode.InnerDefaultProperty)
        ]
        public ArrayList User
        {
            get
            {
                if (UserList == null)
                {
                    UserList = new ArrayList();
                }
                return UserList;
            }
        }
然后写了编辑器类
public class UserCollectionEditor :CollectionEditor
    {
        public ContactCollectionEditor(Type type)
            : base(type)
        {
        }

        protected override bool CanSelectMultipleInstances()
        {
            return false;
        }

        protected override Type CreateCollectionItemType()
        {
            return typeof(User);
        }
    }

这样做在webcontrol类中是好使的 --------------------编程问答-------------------- 上面的Editor(typeof(ContactCollectionEditor), typeof(UITypeEditor))应该是Editor(typeof(UserCollectionEditor ), typeof(UITypeEditor)),

第二种方法:
写了类
 [Editor(typeof(UserCollectionEditor ), typeof(UITypeEditor))]
    public class UserCollection : Collection<User>
    {}

然后在webcontrol类中
 private UserCollection _users;

        [PersistenceMode(PersistenceMode.InnerProperty),
       DesignerSerializationVisibility(
           DesignerSerializationVisibility.Content), Category("Behavior")]
        public UserCollection Users
        {
            get
            {
                if (this._users== null)
                {
                    this._users= new UserCollection ();
                }
                return this._users;
            }
        }
这样也是可以的,但是在UserControl类中却不行,即和属性不显示在属性列表内 --------------------编程问答-------------------- 何人解我忧? --------------------编程问答-------------------- VS IDE 的 UserControl 设计器不支持 CollectionEditorAttribute 等特性

可以尝试自己设计 Designer --------------------编程问答-------------------- 帮顶一下,我也遇到了同样的问题。 --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 刨坟
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,