在 运行 时间内添加对象?
Adding objects during run time?
背景
我有一个选项卡,如果从我的数据库查询返回的记录不止一条,该选项卡就会激活。
对于返回的每条记录,我想要创建一组标签并将其放置在选项卡上。例如,如果有 8 条记录,我想创建 8 个标签。
问题
我的循环只创建一个标签,即使我的计数显示我有 8 条记录?不知道为什么?
如何在循环中创建标签 8 次而不是让它们在同一位置绘制 8 次?我希望它们出现在水平列表中。很确定我编写解决方案的方式,它们都会被绘制在同一个地方?
代码
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);
}
尝试这样的事情:
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() 属性 来明确定位它们,请考虑将 FlowLayoutPanel 放在 TabPage 上并向其添加控件。然后他们会自动为你定位。
背景
我有一个选项卡,如果从我的数据库查询返回的记录不止一条,该选项卡就会激活。
对于返回的每条记录,我想要创建一组标签并将其放置在选项卡上。例如,如果有 8 条记录,我想创建 8 个标签。
问题
我的循环只创建一个标签,即使我的计数显示我有 8 条记录?不知道为什么?
如何在循环中创建标签 8 次而不是让它们在同一位置绘制 8 次?我希望它们出现在水平列表中。很确定我编写解决方案的方式,它们都会被绘制在同一个地方?
代码
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);
}
尝试这样的事情:
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() 属性 来明确定位它们,请考虑将 FlowLayoutPanel 放在 TabPage 上并向其添加控件。然后他们会自动为你定位。