【问题标题】:How to properly place dynamically created objects in a groupBox?如何将动态创建的对象正确放置在 groupBox 中?
【发布时间】:2017-09-19 22:39:42
【问题描述】:

我正在尝试在 groupBox 中填充一些标签和轨迹栏。我正在使用列表来定义它们的数量。但我无法正确放置它们。此表单将是一个关于人员的简单民意调查,当我从组合框中选择人员时,将从 csv 文件中提取问题并存储在列表中以在程序的多个部分中使用。

这是我当前的代码:

private void InitializeUI()
    {
        pList = Database_IO.ParsePersonelData();
        fList = Database_IO.ParseFactorData();

        foreach (Personel p in pList)
        {
            personelCB.Items.Add(p.personelName + " " + p.personelSurname);
        }

        List<Label> labels = new List<Label>();
        List<TrackBar> tBars = new List<TrackBar>();
        foreach (Factor f in fList)
        {
            Label l = new Label
            {
                Text = f.factorName
            };
            labels.Add(l);
            this.Controls.Add(l);
            l.Parent = evalGroup;


            TrackBar t = new TrackBar();
            tBars.Add(t);
            this.Controls.Add(t);
            t.Parent = evalGroup;
        }
    }

这就是我想要做的。动态地。我怎样才能做到这一点?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    this.Controls.Add(t) 将轨迹栏添加到表单容器。您应该将其添加到 groupBox 容器中:

    evalGroup.Controls.Add(t)

    您还必须使用Location 属性和DockStyle 相应地放置它们

    【讨论】:

    • 啊,谢谢!正如你所看到的,我拼命地试图让那些 groupBox 的孩子(但失败得很惨)。但我仍然需要修复 Dock 和 Location。 Java中有网格布局,c#中有类似的东西吗?所以我可以很容易地放置它们。
    • 我建议使用 TableLayoutPanel,刚开始使用它有点棘手,但它提供了您需要的所有定位控制。
    猜你喜欢
    • 2023-03-08
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2013-03-25
    • 2015-07-12
    • 2018-07-10
    • 1970-01-01
    相关资源
    最近更新 更多