2015-02-09 125 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