Проблема с макетом элемента управления при динамическом создании winform и элементов управления для формы - PullRequest
1 голос
/ 21 июня 2011

Я получил этот ответ от вызова веб-службы.Примерно так:

<Response>
<Control1 type = "DropdownList" value= "USA,UK,Sweden,UAE"/>
<Control2 type = "Textbox" value= "Contries"/>
<Control3 type = "Button" value= "None">
</Response>

Исходя из этого, я десериализую его в List<Controls>.

Теперь мне нужно иметь возможность динамически создавать winform-форму на основе этих элементов управления. Моя проблема в макете. Я хочу иметь возможность создавать их красиво разделенными (если возможно, вертикально выровненными) в пакетах, скажем, 5. Так что, если мне нужно 15 элементов управления, у меня есть 3 столбца и 5 строк.Каков наилучший способ добиться этого?Я знаю, что могу использовать встроенные свойства позиционирования, такие как top, width и т. Д., Но, может быть, кто-то там сделал что-то подобное лучше.

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Я думаю, вы должны использовать TableLayoutPanel . Также вы можете прочитать рекомендации , чтобы использовать этот элемент управления.

Одно из преимуществ использования TableLayoutPanel из статьи выше:

Макеты, которые будут динамически изменяться или генерироваться во время выполнения, например формы ввода данных, в которые настраиваемые пользователем поля добавляются или вычитаются на основе предпочтений.

0 голосов
/ 22 июня 2011

Так что в основном я собираюсь сделать что-то подобное (может быть полезно для кого-то другого)

Form op = new Form();
            FlowLayoutPanel panel = new FlowLayoutPanel();
            op.Controls.Add(panel);
            for (int i = 0; i < 10; i++)
            {
                Button b = new Button();
                b.Text = "Button" + i.ToString();
                panel.Controls.Add(b);

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...