2009-09-16 77 views

回答

33

這就是尼克講的是兩個選擇(你應該能夠運行這個代碼,看看這兩個選項):

public Form1() 
    { 
    InitializeComponent(); 

    for (int i = 0; i < 5; i++) 
    { 
     Button button = new Button(); 
     button.Location = new Point(20, 30 * i + 10); 
     switch (i) 
     { 
      case 0: 
       button.Click += new EventHandler(ButtonClick); 
       break; 
      case 1: 
       button.Click += new EventHandler(ButtonClick2); 
       break; 
      //... 
     } 
     this.Controls.Add(button); 
    } 

    for (int i = 0; i < 5; i++) 
    { 
     Button button = new Button(); 
     button.Location = new Point(160, 30 * i + 10); 
     button.Click += new EventHandler(ButtonClickOneEvent); 
     button.Tag = i; 
     this.Controls.Add(button); 
    } 
    } 

    void ButtonClick(object sender, EventArgs e) 
    { 
    // First Button Clicked 
    } 
    void ButtonClick2(object sender, EventArgs e) 
    { 
    // Second Button Clicked 
    } 

    void ButtonClickOneEvent(object sender, EventArgs e) 
    { 
    Button button = sender as Button; 
    if (button != null) 
    { 
     // now you know the button that was clicked 
     switch ((int)button.Tag) 
     { 
      case 0: 
       // First Button Clicked 
       break; 
      case 1: 
       // Second Button Clicked 
       break; 
      // ... 
     } 
    } 
    } 
+1

對,我只是比你更懶! – Nick 2009-09-16 17:50:33

+0

這些按鈕會響應點擊事件,就像當我點擊button1時,消息應該顯示「Button 1 Clicked」,點擊按鈕2時它應該顯示「Button 2 Clicked」。等等... – 2009-09-17 13:29:56

+1

他們肯定會,繼續並通過放置斷點或添加MessageBox.Show(「在此處添加我的評論」)來測試它;看到它的工作。 – SwDevMan81 2009-09-17 15:08:43

3

猜你可能曾嘗試:是的,所有的按鈕觸發他們的活動,以同樣的方法,但sender -parameter回調方法包含對實際導致了特定事件的按鈕的引用。

8

我假設你在一個循環中,並做這樣的事情?

Button newButton = new Button(); 
newButton.Click += new EventHandler(newButton_Clicked); 

您正在爲所有按鈕註冊相同的方法。每個按鈕都需要單獨的方法。或者,您可以爲每個按鈕分配一個不同的標識屬性,並在您的處理程序中檢查以查看哪個按鈕是發件人。

從那裏你可以採取適當的行動。

-1
button b =new button(); 
b.text = " enter text"; 
b.click =+(then press Tab using key board) 
+0

它是如何解決問題的? – Moumit 2016-03-27 05:51:46

相關問題