Двойная групповая коробка - PullRequest
0 голосов
/ 28 декабря 2010

Как я могу продублировать групповой ящик в приложении окна C #, групповой блок содержит 30 текстовых полей, и мне нужно продублировать его на специальном событии, и я не знаю максимальное количество необходимых групповых блоков

1 Ответ

0 голосов
/ 28 декабря 2010

Если вы используете winforms, возможные решения:

  1. Поместите групповое поле в форму, настройте его, скопируйте сгенерированный код (из файла ..designer.cs) и поместите его в метод. Когда происходит событие, вы просто вызываете метод, который создаст новый элемент управления.
  2. Используя отражение, создайте новый объект того же типа, и любое доступное для записи свойство получит скопированные значения, используйте этот метод:

    private object CloneObject(object o)
    {
        Type t = o.GetType();
        PropertyInfo[] properties = t.GetProperties();
    
    
    <pre><code>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;
    
    }

Используйте это как:

private void button1_Click(object sender, EventArgs e)
{
GroupBox g = (GroupBox)CloneObject(groupBox1);
}

Оба метода описаны здесь

...