我有一个页面,我必须修改变量,这些变量是具有成对值和标签的字符串。我正在使用数据网格对象,但它不足以满足所需(或者最终不会)。
所以我有一个表单,它是一个文本标签和文本框,以及一个流程面板,我正在尝试以编程方式为流程面板中的每个变量添加此表单的实例,但我什么也没得到。谷歌搜索解决方案带来了很多视频教程,包括单击 UI 设计器中的按钮并将它们放在流面板上,但是我想以编程方式执行此操作。
这样做的“正确”或“标准”方式是什么。
我有一个页面,我必须修改变量,这些变量是具有成对值和标签的字符串。我正在使用数据网格对象,但它不足以满足所需(或者最终不会)。
所以我有一个表单,它是一个文本标签和文本框,以及一个流程面板,我正在尝试以编程方式为流程面板中的每个变量添加此表单的实例,但我什么也没得到。谷歌搜索解决方案带来了很多视频教程,包括单击 UI 设计器中的按钮并将它们放在流面板上,但是我想以编程方式执行此操作。
这样做的“正确”或“标准”方式是什么。
数据(成对)听起来可能更适合 a TableLayoutPanel
,但理论是一样的;只需打电话.Controls.Add(...)
,它应该可以工作:
FlowLayoutPanel panel = new FlowLayoutPanel();
Form form = new Form();
panel.Dock = DockStyle.Fill;
form.Controls.Add(panel);
for (int i = 0; i < 100; i++)
{
panel.Controls.Add(new TextBox());
}
Application.Run(form);
或带有TableLayoutPanel
:
TableLayoutPanel panel = new TableLayoutPanel();
Form form = new Form();
panel.Dock = DockStyle.Fill;
panel.ColumnCount = 2;
form.Controls.Add(panel);
for (int i = 0; i < 100; i++)
{
panel.Controls.Add(new Label { Text = "label " + i });
panel.Controls.Add(new TextBox { Text = "text " + i });
}
另外 - 我想知道 aPropertyGrid
是否会更好地满足您的需求?这将处理所有“获取值”、“显示值”、“解析值”、“存储值”逻辑,并且可以插入诸如ICustomTypeDescriptor
允许动态属性之类的东西。
要将表单的实例添加到流程布局面板,我执行以下操作:
Form1 f1 = new Form1();
f1.TopLevel = false;
f1.Visible = true;
flowLayoutPanel1.Controls.add(f1);
在我的测试代码中似乎工作正常。