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

一个关于集合属性的问题。

我有一个类,其中有一个属性是一个集合属性。 然后我的程序在一个PropertyGrid中可以编辑这个属性。但是,问题是这个属性可以通过getter获得值,却不能通过这里的setter方法来设置值。很郁闷,导致无法引发事件。可能我的方法不对,请大家帮我看看,给我指条路。谢谢。
[Category("Tab")]
        public List<TabCtrl> Tabs
        {
            get
            {
                return tabs;
            }
            set
            {
                TabCtrl tab;
                if (value.Count > 0)
                {
                    for (int i = 0; i < MaxTab; i++)
                    {
                        tab = value[i];
                        tab.Owner = this;
                        tabs[i] = tab;
                    }
                }

                OnPropertyChanged(EventArgs.Empty);
            }
        } --------------------编程问答-------------------- 成员变量定义是:List<TabCtrl> tabs = new List<TabCtrl>(MaxTab); --------------------编程问答-------------------- 属性为集合时,应该做成只读的,也就是只有get,没有set,set是靠集合自己的方法实现的,假设class1是这个类的一个实例,则修改这个集合元素的方法是
class1.Tabs.Add(),也就是对集合进行操作。
如果像楼主这种在set的时候需要触发事件,则在类中应该再加一个方法,比如public void SetTabs(List<TabCtrl> value),方法里面就可以执行你现在写在set里面的代码 --------------------编程问答-------------------- ^ō^ 理所当然! 因为 TabCtrl 不是基元类型, 需要写相应的类型转换器喔... --------------------编程问答-------------------- TabCtrl  对象需要先实列化
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,