我试图动态更改linklabel的名称,以便能够在for语句中循环使用它们,但是由于我缺乏编程知识,因此无法完成它。
如果您能解释我的每一步,我将非常感激。
for (int i = 0; i < 205; i++)
{
if (LinkLabel# + i.Text == "name")
{
// do stuff
}
}
答案 0 :(得分:0)
您可以按名称搜索表单上的控件以获取对它们的引用。
memeads <- lmer(means ~ crosswalk + approach_width + lumix + pop_dens + empl_dens + (1 + lumix + pop_dens + empl_dens | Approach_ID) + (1 +crosswalk + approach_width | Int_ID), data = db)
尽管如果强制转换失败或找不到控件,这可能会引发异常。
一种更安全的方法是使用模式匹配:
LinkLabel ll = (LinkLabel)this.Controls["LinkLabel" + i];
答案 1 :(得分:0)
另一种方法(由@Broots Waymb建议)是动态创建链接标签控件并将其添加到表单中。这是一些示例代码,这些代码是我从已经使用的其他代码中改编而成的。 (未经测试,但看起来应该可以使用)
/// <summary>
/// List for storing references to the LinkLabels
/// </summary>
List<LinkLabel> m_LinkLabels = new List<LinkLabel>();
/// <summary>
/// Creates and places all the LinkLabels on the form
/// </summary>
private void CreateLinkLabels()
{
int startingX = 100; // starting top left X coordinate for first link label
int startingY = 100; // starting top left Y coordinate for first link label
int xOffset = 20; // horizontal space between labels
int yOffset = 20; // vertical space between labels
int labelsToCreate = 100; // total number of labels to create
int labelsPerRow = 10; // number of labels in each row
int labelWidth = 61; // width of the labels
int labelHeight = 13; // height of the labels
int labelsInCurrentRow = 0; // number of labels in the current row
int x = startingY; // current x coordinate
int y = startingX; // current y coordinate
int tabIndexBase = 65; // base number for tab indexing
for (int i = 0; i < labelsToCreate; i++)
{
// update coordinates for next row
if (labelsInCurrentRow == labelsPerRow)
{
x = startingX;
y += yOffset;
labelsInCurrentRow = 0;
}
else
{
x += xOffset;
labelsInCurrentRow++;
}
// create the label
LinkLabel ll = new LinkLabel()
{
Name = "LinkLabel" + (i + 1), // +1 to correct zero based index
AutoSize = true,
Location = new System.Drawing.Point(x, y),
Size = new System.Drawing.Size(labelWidth, labelHeight),
TabIndex = tabIndexBase + i,
TabStop = true,
Text = "LinkLabel" + (i + 1) // +1 to correct zero based index
};
// add the label to the list
m_LinkLabels.Add(ll);
}
// add all controls in the list to the form
this.Controls.AddRange(m_LinkLabels.ToArray());
}