一个关于集合属性的问题。
我有一个类,其中有一个属性是一个集合属性。 然后我的程序在一个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#