2015-02-09 87 views
-1

所以我使用动态创建的标签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(); 
} 

也就是点击一个按钮的方法。 我有Button2 Click方法,我想更改lab.TabIndex或/和lab.Text。 我该怎么做?

第二个问题: 我该怎么做点击标签之一?比方说,我想改变一个颜色我点击的标签之一...我怎么能做到这一点?

我是初学者所以......可怜:)

回答

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]

+0

谢谢。这有助于:) – 2015-02-09 00:46:26