3

我有一个页面,我必须修改变量,这些变量是具有成对值和标签的字符串。我正在使用数据网格对象,但它不足以满足所需(或者最终不会)。

所以我有一个表单,它是一个文本标签和文本框,以及一个流程面板,我正在尝试以编程方式为流程面板中的每个变量添加此表单的实例,但我什么也没得到。谷歌搜索解决方案带来了很多视频教程,包括单击 UI 设计器中的按钮并将它们放在流面板上,但是我想以编程方式执行此操作。

这样做的“正确”或“标准”方式是什么。

4

2 回答 2

2

数据(成对)听起来可能更适合 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允许动态属性之类的东西。

于 2009-03-12T10:48:05.417 回答
2

要将表单的实例添加到流程布局面板,我执行以下操作:

Form1 f1 = new Form1();
f1.TopLevel = false;
f1.Visible = true;
flowLayoutPanel1.Controls.add(f1);

在我的测试代码中似乎工作正常。

于 2009-03-12T11:51:26.187 回答