c#Picturebox数组选择

时间:2018-12-02 23:59:56

标签: c# forms picturebox

我创建了一组图片框和一个单击时的事件。

   public void TicTac_Load(object sender, EventArgs e)
   {
            PictureBox[] PBox = new PictureBox[9];
            PBox[0] = this.pictureBox1;
            PBox[1] = this.pictureBox2;
            PBox[2] = this.pictureBox3;
            PBox[3] = this.pictureBox4;
            PBox[4] = this.pictureBox5;
            PBox[5] = this.pictureBox6;
            PBox[6] = this.pictureBox7;
            PBox[7] = this.pictureBox8;
            PBox[8] = this.pictureBox9;
        for (int i = 0; i < 9; i++)
        {
            PBox[i].Click += new System.EventHandler(PBoxes_Click);
        }
    }
    public void PBoxes_Click(object sender, EventArgs e)
    {
      PictureBox myPictureBox = sender as PictureBox;
     //if(Pbox[1].click){
     //^^ Looking for something like this 
    }

我的问题是如何确定我的哪个图片框已被单击,因为我无法访问其中任何一个。我只想知道方法中单击了哪个,而不是创建多个。

pictureBox1_Click(object sender, EventArgs e)

喜欢活动

1 个答案:

答案 0 :(得分:1)

有多种解决方法。

您可以将sender转换为正确的类型(此处为PictureBox):

public void TicTac_Load(object sender, EventArgs e)
{
        PictureBox[] PBox = new PictureBox[9];
        PBox[0] = this.pictureBox1;
        PBox[1] = this.pictureBox2;
        PBox[2] = this.pictureBox3;
        PBox[3] = this.pictureBox4;
        PBox[4] = this.pictureBox5;
        PBox[5] = this.pictureBox6;
        PBox[6] = this.pictureBox7;
        PBox[7] = this.pictureBox8;
        PBox[8] = this.pictureBox9;
    for (int i = 0; i < 9; i++)
    {
        PBox[i].Click += new System.EventHandler(PBoxes_Click);
    }
}
public void PBoxes_Click(object sender, EventArgs e)
{
   PictureBox myPictureBox = sender as PictureBox;
}

或者(不建议使用),您可以将PBox移动到类级数组:

PictureBox[] PBox = new PictureBox[9];
public void TicTac_Load(object sender, EventArgs e)
{
        PBox[0] = this.pictureBox1;
        PBox[1] = this.pictureBox2;
        PBox[2] = this.pictureBox3;
        PBox[3] = this.pictureBox4;
        PBox[4] = this.pictureBox5;
        PBox[5] = this.pictureBox6;
        PBox[6] = this.pictureBox7;
        PBox[7] = this.pictureBox8;
        PBox[8] = this.pictureBox9;
    for (int i = 0; i < 9; i++)
    {
        PBox[i].Click += new System.EventHandler(PBoxes_Click);
    }
}
public void PBoxes_Click(object sender, EventArgs e)
{
   PictureBox myPictureBox = PBox[PBox.indexOf(sender)];
}