2012-07-09 49 views
1
private void p01_Click(object sender, EventArgs e) 
    { 
     if (p01.Image == pmiss.Image) 
     { 
      score++; 
      makeMoleVisable(1, phit); 
     } 
     else 
     { 
      score--; 
      molesmissed++; 
     } 
    } 
    private void p02_Click(object sender, EventArgs e) 
    { 
     if (p02.Visible) 
     { 
      if (p02.Image == pmiss.Image) 
      { 
       score++; 
       p02.Image = phit.Image; 
      } 
      else 
      { 
       score--; 
       molesmissed++; 
      } 
     } 
    } 

你好,我有36個這些picturebox點擊事件。我想爲所有36個圖片框使用一個點擊事件。此外,所有點擊事件都會執行相同的操作,代碼在第一個上略有不同。 Thnaks如何將Picture Box單擊事件合併爲一個?

+0

抱歉,由於某種原因,我不會登錄,所以我會發布我的評論。唯一的麻煩是(1,phit)。這隻能讓我改變第一張圖片。我如何讓makemoleVisible知道哪個picurebox的圖像更改爲痣? – 2012-07-13 10:40:16

回答

3

只需轉到每張圖片的events屬性並設置爲p02_Click或使用您自己的自定義名稱。

如果你在一個面板中的所有圖片框,你可以嘗試:

foreach (Control p in mypanel.ControlCollection) 
{ 
    p = p as PictureBox; 
    p.Click += (p01_Click); 
} 

您還可以測試,看它是否是pictureBox1通過設置Tag屬性p01和檢查代碼屬性。

1

您可以爲每個組圖片框重新使用eventhandler方法。該方法的sender參數將包含觸發該事件的對象。

+0

你好,我認爲我在這條正確的道路上,我只是不太明白你的意思;到目前爲止我有這樣的: – 2012-07-11 16:56:46

+0

private void pBox_Click(object sender,EventArgs e) { PictureBox temp =(PictureBox)sender; if(temp.Image == pmiss.Image) score ++; makeMoleVisable(1,phit); } else { score--; molesmissed ++; } } – 2012-07-11 16:57:06

+0

這看起來不錯。它工作嗎?不知道temp.Image == pmiss.Image是否給出了正確的結果。 – Maarten 2012-07-12 05:42:13