永发信息网

如何复制控件的全部属性

答案:1  悬赏:40  手机版
解决时间 2021-02-01 23:39
  • 提问者网友:流星是天使的眼泪
  • 2021-02-01 19:44
如何复制控件的全部属性
最佳答案
  • 五星知识达人网友:一袍清酒付
  • 2021-02-01 20:54
复制全部属性数据也就是深度拷贝对象。
控件不能序列化,那就只有反射来实现深度拷贝了。

C#代码
    class 拷贝对象
    {
        public static T 反射深度拷贝(T obj)
        {
            //如果是字符串或值类型则直接返回
            if (obj is string || obj.GetType().IsValueType) return obj;

            object retval = Activator.CreateInstance(obj.GetType());
            FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
            foreach (FieldInfo field in fields)
            {
                try { field.SetValue(retval, 反射深度拷贝(field.GetValue(obj))); }
                catch { }
            }
            return (T)retval;
        }
     }调用方法,例如要拷贝Button1按钮

Button 新按钮 = 拷贝对象.反射深度拷贝
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯