问题描述
我建了一个Class,代码如下:classPeople{privatestringname;publicstringName{get{returnthis.name;}set{this.name=value;}}}然后我有一个Peoples类classPeoples{privateList<People>peoples;publicList<People>Peoples{get{returnthis.peoples;}}}然后我把这个peoples实例绑定到Winform的一个DataGridView中在DataGridView旁边有添加、修改、删除等按钮,另外,DataGridView也支持修改。窗口有“确定”、“取消”按钮。点“取消”时要返回原对象,但是,我对DataGridView进行修改时已经改掉了原List,那我怎么找回原List呢?最土的方法也许是改前先复制一份List,有没有更完美的解决方案?谢谢
解决方案
解决方案二:
建议在classPeople上增加几个属性,IsNew,PreName(保留以前的Name)等等.这样就可以控制你的数据了.
解决方案三:
我觉得应该修改一下类的定义,使People有一个复制功能及Peoples属性返回它的一个副本:classPeopleCols{privateList<People>peoples;publicList<People>Peoples{get{List<People>tmp=newList<People>();foreach(Peoplepinthis.peoples){tmp.Add(p.Copy());}returntmp;}set{this.peoples.Clear();foreach(Peoplepinvalue){this.peoples.Add(p.Copy());}}}}classPeople{privatestringname;publicstringName{get{returnthis.name;}set{this.name=value;}}publicPeopleCopy(){People_p=newPeople();_p.name=this.name;return_p;}}
解决方案四:
嗯。这些方法都要修改类结构,有没有不用修改类结构的方法呢?楼主的意思应该是不修改类结构吧。
解决方案五:
如果不用修改原来的类结构,那可能就不能使用Class而使用Struct来声明数据类型了。比如:structPeople{privatestringname;publicstringName{get{returnthis.name;}set{this.name=value;}}}