随笔 - 113  文章 - 0  评论 - 218  阅读 - 73万

动态创建多个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   陈国利  阅读(4136)  评论(1编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2011年6月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 1 2
3 4 5 6 7 8 9

点击右上角即可分享
微信分享提示