使用动态创建的标签c#

时间:2015-02-09 00:27:05

标签: c#

所以我有

TableLayoutPanel table = new System.Windows.Forms.TableLayoutPanel();
public int d;
private void button1_Click(object sender, EventArgs e)
{
    d = (int)numericUpDown1.Value;
    table.ColumnCount = d;
    table.RowCount = d;
    this.Controls.Add(table);
    int k = 1;
    for (int i = 0; i < d; ++i)
        for (int j = 0; j < d; j++)
        {
            Label lab = new System.Windows.Forms.Label();
            lab.Size = new Size(50, 50);
            lab.Text = (k).ToString();
            lab.TabIndex = k++;
            lab.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            table.Controls.Add(lab, j, i);
        }
    table.Show();
}

这是一个Button Click方法。 我有Button2 Click方法,我想更改lab.TabIndex或/和lab.Text。 我怎么能这样做?

第二个问题: 我该如何点击其中一个标签?让我们说我想改变其中一个标签我点击的颜色......我该怎么做?

我是初学者所以......怜悯:)。

1 个答案:

答案 0 :(得分:0)

定义标签数组(全局变量,就像使用table一样):

Label[] labels;

button1_Click中添加代码行:

labels = new Label[d*d]; // array of d*d labels

在循环内部,定义特定标签,如:

labels[i*d+j] = new System.Windows.Forms.Label();

所以你的循环看起来像:

for (int i = 0; i < d; ++i)
   for (int j = 0; j < d; j++)
   {
      labels[i*d+j] = new System.Windows.Forms.Label();
      labels[i*d+j].Size = new Size(50, 50);
      labels[i*d+j].Text = (k).ToString();
      labels[i*d+j].TabIndex = k++;
      labels[i*d+j].TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
      table.Controls.Add(labels[i*d+j], j, i);
   }

您也可以通过相同的方式(labels[n]

从其他按钮访问它们