动态创建多个pictureBox控件并响应不同的事件

在winform程序设计中,有时需要在同一个窗口中创建多个pictureBox同时加载显示多个图片。然后鼠标点击每一个图片做出不同的事件处理。

新建一个PictureBox控件

 PictureBox pb = new PictureBox();
为这个控件添加一个点击事件

 

如:

 pb.Click += new System.EventHandler(this.pictureBox_Click);//添加Click事件
 有这个基础,那么动态创建多个控件也是一件容易的事情

 代码如下:

View Code
        /// <summary>
        
/// 图片创建控件,并初始化一共是96个
        
/// </summary>
        private void createPicBoxList()
        {
            PictureBox pb 
= null;
            
for (int j = 0; j < 8; j++)
            {
                
for (int i = 0; i < 12; i++)
                {
                    pb 
= new PictureBox();
                    pb.BackColor 
= Color.White;

                    
//通过这个标识记录不同的编号y在前面.记X从1开始索引,Y直接保存A...H这种
                    
//已经转化为A1,A2,....H12这种格式,其中A的ASCII=65
                    pb.Tag = (Convert.ToChar(j + 65)).ToString() + (i + 1).ToString();
                    pb.Name 
= "pb";//通过这个Name标记所有PictureBox控件. 
                    pb.Size = new Size(5656);//大小
                    pb.Location 
= new Point(i * 56, j * 56);//位置. 
                    pb.Image 
= holesImg;//初始化图片Bitmap或者Image对象
                    pb.Click += new System.EventHandler(this.pictureBox_Click);//添加Click事件
                    this.groupBox.Controls.Add(pb);//加载到groupBox容器内
                }
            }
        }

以上各个参数根据自己实际需要修改,这里是仅是演示作用,上述代码中一共创建了96个控件和图片

下面点击每一个控件所响应的事件

 

View Code
        /// <summary>
        
/// 点击图片按钮事件
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>
       private void pictureBox_Click(object sender, EventArgs e)
       {
           PictureBox pic 
= sender as PictureBox;//定义鼠标当前点击picureBox的行为
           if (pic == null)
           {
               
return;
           }
          
string tag = pic.Tag.ToString();
           MessageBox.Show(tag);
//显示每一个图片位置编号,其他的功能根据自己需要扩展
           
//this.groupBox.Refresh();
       
       }

如果要找出每一个图片的其他属性或信息,可以用这种方法

            foreach (PictureBox pb in groupBox.Controls.Find("pb", true))
               {

                   //pb.....
                  //anything you can do for each picture

                
               }
         

OK,动态创建多个图片,同时处理其事件就这么简单!高手请漂过。。。

posted on 2011-06-29 17:00  陈国利  阅读(4123)  评论(1编辑  收藏  举报