我一次动态生成5个pictureBox,怎样才能点击哪个pictureBox让其背景变为红色呢,当再次点击另一个时,前面点击的又恢复原色。 public void ssss()
        {
            for (int i = 0; i < 5; i++)
            {
                PictureBox pic = new PictureBox();
                pic.Image = Bitmap.FromFile(file);
                pic.Location = new Point(0, i * 70);
                this.panel1.Controls.Add(pic);
                pic.Click += new EventHandler(pic_Click);
            }
        }        void pic_Click(object sender, EventArgs e)
        {
            //怎么办呢?
        }

解决方案 »

  1.   

      
     每创建个 PictureBox 的时候 pic.name="pic"+i.tostring()用来标志每个 PictureBox ;
    void pic_Click(object sender, EventArgs e) 
            { 
                PictureBox pic =( PictureBox)sender;
                switch(pic.name)
               {
                  case pic1: this.pic1.backcolor=color.red; break;
                  case pic2: this.pic1.backcolor=color.red; this.pic1.backcolor=默认的颜色;break;
                  ..........        }
      

  2.   


    private PictureBox oldPic = null;
    void pic_Click(object sender, EventArgs e) 
            { 
               if(oldPic!=null) oldPic.BackColor = Color.默认颜色;
               oldPic = ((PictureBox)sender);
               oldPic.BackColor = Color.Red;    
                 
     }
      

  3.   

    获取focus 然后设置backgroundColor