动态创建多个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( 56 56 );//大小
                    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,动态创建多个图片,同时处理其事件就这么简单!高手请漂过。。。

你可能感兴趣的:(事件)