问题描述
||
我从Web服务呼叫获得此响应。像这样
<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等),但是也许有人在那里做的更好。
解决方法
我认为您应该使用TableLayoutPanel。您也可以阅读最佳实践以使用此控件。
使用以上文章中的TableLayoutPanel的好处之一:
将在运行时动态修改或生成的布局,例如具有根据首选项添加或减去用户可自定义字段的数据输入表单。
, 所以基本上我会做这样的事情(可能对其他人有用)
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);
}