在运行时添加对象?

时间:2015-01-25 16:08:50

标签: c# loops object foreach iteration

背景

如果我的数据库中的查询返回了多条记录,我有一个激活的选项卡。

对于返回的每条记录,我希望创建一组标签并将其放置在选项卡上。例如,如果有8条记录,我希望创建8个标签。

问题

  1. 我的循环只创建一个标签,即使我的计数显示我有8条记录?不确定为什么?

  2. 如何在循环中创建标签8次,而不是让它们在同一位置绘制8次?我希望他们出现在水平列表中。我很清楚我编写解决方案的方式,它们都将被绘制在同一个地方?

  3. 代码

    for (int i = 1; i <= rowCount; i++)
    {      
        // Create objects 
        LinkLabel Linklabel1 = new LinkLabel();
        Linklabel1.Text += ds.Tables[0].Rows[0]["code"].ToString();
        Linklabel1.Location = new Point(10, 50);
        Linklabel1.Height = 40;
        Linklabel1.Width = 100;
        tabControl1.TabPages[0].Controls.Add(Linklabel1);       
    }
    

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

        for (int i = 0; i < rowCount; i++)
        {
            // Create objects 
            LinkLabel Linklabel1 = new LinkLabel();
            Linklabel1.Text = ds.Tables[0].Rows[i]["code"].ToString();
            Linklabel1.Height = 40;
            Linklabel1.Width = 100;
            Linklabel1.Location = new Point((i + 1) * 10 + (i * Linklabel1.Width), 50);
            tabControl1.TabPages[0].Controls.Add(Linklabel1);
        }

如果您不想通过设置Location()属性来显式定位它们,请考虑在TabPage上放置FlowLayoutPanel并将控件添加到该页面。然后他们会自动为您定位。