2011-03-09 150 views
0

我正在嘗試更改網格中PictureBox的BackColor。 PictureBox是數組的一部分,數組有一個chared事件處理程序。我很難改變不同的PictureBox的取決於哪一個被點擊。在不知道名稱的情況下更改發件人對象的屬性

這是我到目前爲止有:

private PictureBox[,] GameGrid = new PictureBox[20, 20];

 public frmGame() 
    { 
     int x = 10; 
     int y = 10; 
     for (int i = 0; i < 20; i++) 
     { 

      for (int j = 0; j < 20; j++) 
      { 
       GameGrid[i, j] = new System.Windows.Forms.PictureBox(); 
       setUpPicBox(x, y, i, j); 
       x += 11; 
      } 
      y += 11; 
      x = 10; 
     } 
     InitializeComponent(); 
    } 


    public void setUpPicBox(int x, int y, int i, int j) 
       { 
        this.GameGrid[i, j].Location = new System.Drawing.Point(x, y); 
        this.GameGrid[i, j].Size = new System.Drawing.Size(10, 10); 
        this.GameGrid[i, j].BackColor = Color.Black; 
        this.GameGrid[i, j].Name = "btnGrid" + i + "-" + j; 
        this.GameGrid[i, j].Visible = true; 
        this.GameGrid[i, j].CreateGraphics(); 
        this.GameGrid[i, j].Click += new System.EventHandler(this.picturebox_Click); 
        this.Controls.Add(GameGrid[i, j]); 
       } 

    private void picturebox_Click(object sender, EventArgs e) 
    { 

    }</code> 

Any help would be appreciated

+0

您有什麼困難?錯誤信息;點擊圖片框時什麼都沒有發生?多一點信息來幫助。乾杯。 – 2011-03-09 11:55:49

+0

我可以發生一般事件。所以無論點擊哪個圖片框,我都可以發生同樣的事情。但我想要做的是,如果PictureBox 10被點擊,那麼那個會改變顏色。我試過使用:'BackColor = Color.White',但是這改變了背景顏色。 – Graham 2011-03-09 11:57:50

回答

3

The event handler's sender參數是引發事件的實例。這裏是用戶點擊的PictureBox實例。如果您想更改其BackColor,則只需將發件人對象轉換爲正確的類型並設置新的顏色即可。

private void picturebox_Click(object sender, EventArgs e) 
{ 
    var pictureBox = sender as PictureBox; 
    if (pictureBox != null) { 
     pictureBox.BackColor = Color.Blue; 
    } 
} 
+0

謝謝,那工作。我試圖使用發件人,但不知道如何正確,謝謝你的幫助。 – Graham 2011-03-09 12:03:13

0

在您的事件處理程序上,sender包含引發事件處理程序觸發的對象。因此,通過它鑄造到正確的類型,我們就可以訪問所有的屬性按照本例:

private void picturebox_Click(object sender, EventArgs e) 
{ 
    PictureBox pic = (PictureBox)sender; 
    MessageBox.Show(pic.Name); 
} 

注:未測試的代碼,沒有到VS訪問測試

+0

感謝您的幫助,我一直在錯誤地使用sender對象 – Graham 2011-03-09 12:04:21

相關問題