如何复制控件的全部属性
答案: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 新按钮 = 拷贝对象.反射深度拷贝
控件不能序列化,那就只有反射来实现深度拷贝了。
C#代码
class 拷贝对象
{
public static T 反射深度拷贝
{
//如果是字符串或值类型则直接返回
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 新按钮 = 拷贝对象.反射深度拷贝
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯