2012-12-27 66 views
-1

此代碼將幫我在這序列如動態生成方法值

A1 A2 A3 A4 A5
B1 B2 B3 B4 B5
C1 C2 C3 C4 C5
D1 D2 D3 D4 D5生成的標籤

但現在我想的是,我可以單擊標籤,每個標籤都會有自己的ID和呼叫檢查的方法是免費使用。
所以我要讓它自動生成加粗部分

vartable[namelabel].Click += new System.EventHandler(**vartable[namelabel]_Click**); 

namelabel是自動生成相同的名稱或

Private void lbl11_Click 

我能做些什麼?

private void button1_Click(object sender, EventArgs e) 
    { 

     for (int i = 1; i <= 9; i++) 
     { 
      for (int q = 1; q <= 9; q++) 
      { 
       string lettle="a"; 
       if(i==1) 
       { 
        lettle="A"; 
       } 
       else if(i==2) 
       { 
        lettle="B"; 
       } 
       else if (i == 3) 
       { 
        lettle = "C"; 
       } 
       else if (i == 4) 
       { 
        lettle = "D"; 
       } 
       else if (i == 5) 
       { 
        lettle = "E"; 
       } 
       else if (i == 6) 
       { 
        lettle = "F"; 
       } 
       else if (i == 7) 
       { 
        lettle = "G"; 
       } 
       else if (i == 8) 
       { 
        lettle = "H"; 
       } 
       else if (i == 9) 
       { 
        lettle = "I"; 
       } 

       string labeltext = lettle + q; 
       int y = (100 + (q * 20)); 
       int x = (100 + (i * 20)); 
       string namelabel = "lbl" + i + q; 
       var method = namelabel; 
        var vartable = new Dictionary<string, Label>(); 
        vartable[namelabel] = new Label(); 
        vartable[namelabel].AutoSize = true; 
        vartable[namelabel].Location = new System.Drawing.Point(y, x); 
        vartable[namelabel].Name = namelabel; 
        vartable[namelabel].Size = new System.Drawing.Size(35, 13); 
        vartable[namelabel].TabIndex = 1; 
        vartable[namelabel].Text = labeltext; 
        vartable[namelabel].Cursor = System.Windows.Forms.Cursors.Hand; 
        this.Controls.Add(vartable[namelabel]); 
        vartable[namelabel].Click += new System.EventHandler(**vartable[namelabel]_Click**); 



      } 

     } 
+1

問題不準確,過於寬泛。考慮來形容你想更清楚,不熟悉你的項目讀者知道你想,以幫助你達到什麼做什麼。 –

+0

我其實做這樣的事情,預訂劇院座位,所以當我點擊標籤,就會讓我或者讓我去預訂座位。我已經讓它自動加載被拿走的地方。因此,如果這個座位被拿走,它會變成紅色,而如果其adaviable它會變成藍色。但是每當它點擊時,它仍然應該反檢查並顯示預訂或正在拍攝。 –

回答

0

您可以使用Label(從基類Control繼承)的「Tag」屬性來存儲座位號。這使您可以爲所有Label對象使用相同的事件處理程序。一旦事件處理程序被調用,它可以通過檢查標籤確定哪個標籤實際上已被點擊。

的預訂/可用信息可以存儲在由座位號索引布爾的陣列。

樣品事件處理程序:

private void label_Click(object sender, EventArgs e) 
     { 
      if (((Label)sender).Tag.Equals("1")) 
      { 
       MessageBox.Show("Label 1 clicked!"); 
      } 
     } 
+0

我很新的C#,如何檢查其標籤正在被點擊?謝謝 –

+0

對不起,提出這麼多問題,Tag.Equals(「1」))「1」是否意味着標籤的名稱?我的標籤名稱是從lbl11到lbl99的名稱。 –

+0

「標籤」是每一個控制對象的屬性。您可以將任何對象分配給標記。在我的示例中,我使用Visual Studio屬性編輯器爲Tag分配了一個字符串「1」。您也可以同樣檢查「名稱」屬性以區分彼此的Label對象。 –