zoukankan      html  css  js  c++  java
  • 动态创建多个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,动态创建多个图片,同时处理其事件就这么简单!高手请漂过。。。

  • 相关阅读:
    常用 Git 命令清单
    radhat 6.4/centos 6.4 下编译安装 最新ruby 2.1.5
    centos 6.4/redhat 6.4 安装gitlab
    微信小程序——navigator无法跳转
    微信小程序——修改data里面数组某一个值
    微信小程序——template的循环嵌套
    微信小程序——template的使用方法
    node学习笔记8——发布npm包
    淘宝镜像使用方法
    node学习笔记7——npm安装包
  • 原文地址:https://www.cnblogs.com/cgli/p/2093574.html
Copyright © 2011-2022 走看看