复制组框

时间:2010-12-28 08:22:33

标签: c# visual-studio-2008

如何在C#窗口应用程序中复制Groupbox, 组框包含30个文本框,我需要在特殊事件上复制它,我不知道所需的组框的最大数量

1 个答案:

答案 0 :(得分:0)

如果您使用winforms,可能的解决方案:

  1. 在表单上放置一个groupbox,对其进行自定义,复制生成的代码(来自..designer.cs文件)并将其放入方法中。当您发生事件时,您只需调用将创建新控件的方法。
  2. 使用反射创建一个相同类型的新对象,任何可写属性都会复制它们的值,使用此方法:

    private object CloneObject(object o)
    {
        Type t = o.GetType();
        PropertyInfo[] properties = t.GetProperties();
    
    
    
    Object p = t.InvokeMember("", System.Reflection.
        BindingFlags.CreateInstance, null, o, null);
    
    
    foreach (PropertyInfo pi in properties)
    {
        if (pi.CanWrite)
        {
            pi.SetValue(p, pi.GetValue(o, null), null);
        }
    }
    return p;
    
    }
  3. 使用它像:

    Object p = t.InvokeMember("", System.Reflection.
        BindingFlags.CreateInstance, null, o, null);
    
    
    foreach (PropertyInfo pi in properties)
    {
        if (pi.CanWrite)
        {
            pi.SetValue(p, pi.GetValue(o, null), null);
        }
    }
    return p;
    

    两种方法都描述为here