是这样滴,我在一个用户控件中有一个Panel ,  一个窗体上有2个这个用户控件,
 有一个按钮,是将这两个用户控件的Panel 交换。  代码是这样的:用户控件的代码:
public Panel Pl

    get { return pl; }//这个pl 就是用户控件中的Panel 的名称。
    set { pl = value; }
}切换的代码是这样的:
Panel pl=plControl1.Pl;   //plControl1,plControl2 就是用户控件在窗体上的名称,
plControl1.Pl=plControl2.Pl;
plControl2.Pl=pl;但是这样交换后明显是引用了,而不是真的切换了, 因为这样切换后,获取plControl1的PL 还是最先的PL ,而不是切换之后的PL。   现在该怎么办?  我说的应该不难理解吧...

解决方案 »

  1.   


    我记得序列化并不能讲private和protected修饰的成员变量保存下来,如果按照用序列化和反序列化实现深拷贝,不是会有问题吗?
      

  2.   

    Panel pl=plControl1.Pl; ,
    plControl1.Pl=plControl2.Pl;
    plControl2.Pl=pl;
    这个必须是引用。  引用类型啊 大哥
    方法参照楼上两星星大神。
      

  3.   

    控件的切换,你当成变量来弄不太合适
    首先你这个panel涉及到包含与被包含关系
    试试
       p1.parent=plControl2;
       p2.parent=plControl1;
      

  4.   

    控件的切换,你当成变量来弄不太合适
    首先你这个panel涉及到包含与被包含关系
    试试
       p1.parent=plControl2;
       p2.parent=plControl1;