2015-12-27 39 views
2

我已經這個代碼部分簡單的方法來識別按鈕和自動加載其目標

  przyciski[i] = new Button(); 
      przyciski[i].Visible = false; 
      przyciski[i].Name = "przycisk" + i; 
      przyciski[i].Click += new System.EventHandler(ButtonClickHandler); 

其描述動態地創建的按鈕,並且該事件處理程序的程序

private void ButtonClickHandler(object sender, EventArgs e) 
    { 
     Button btn = (Button)sender; 

     if(btn.Name == "przycisk1") 
      { 
       //Open specific JPEG in external aplication 
      } 

    } 

下方是否有任何更快如何識別按鈕及其目標?

回答

1

如果przyciski是一個實例變量,你可以檢查引用相等:

private void ButtonClickHandler(object sender, EventArgs e) 
{ 
    if (sender == przycisk[1]) 
    { 
     //Open specific JPEG in external aplication 
     ... 
    } 
    ... 
} 
2

這裏的另一種選擇。如果你打算爲每個按鈕執行一段不同的代碼,爲什麼還要給他們一個名字,然後在click事件中檢測名字?

只需創建您的按鈕,然後指定每個應該做的事情。

var przyciski = new List<Button>(); 

for (var i = 0; i < 5; i++) 
    przyciski.Add(new Button { Visible = false }); 

przyciski[0].Click += (s, e) => { /* Do something */ }; 
przyciski[1].Click += (s, e) => { /* Open specific JPEG in external aplication */ }; 
przyciski[2].Click += (s, e) => { Console.WriteLine("You clicked button 2."); }; 
przyciski[3].Click += (s, e) => { }; 
przyciski[4].Click += (s, e) => { }; 
+1

這應該是我認爲的答案。爲所有需要的按鈕設置不同的事件(如果需要,也可以設置相同的按鈕),如果他們有共同點,只需創建一個方法並在每次點擊事件中調用它。 –

+0

太棒了!這是最簡單的解決方案! –