动态生成picturebox并响应其Click事件

     为了解决panel上绘制image时没有滚动条的问题,将绘制image改为动态生成多个PictureBox控件,原来判断Click是根据点击的位置,现在使用控件如何响应,网上也有相同问题的解答如下:

    事件通过公用的函数来实现的,使picturebox的Click+=new EventHandler(pic_Click);
设置PictureBox的Name,响应事件中把参数sender转化为PictureBox类型,然后得到其Name等,就可以判断哪个控件被Click了

        private int count = 0;
        private void CreatePictureBox(Control parent, string imgfile, int x, int y, int w, int h)
        {
            PictureBox pic = new PictureBox();
            pic.Location = new Point(x, y);     //
设定位置
            pic.Size = new Size( w, h);         //
设定宽高
            pic.Name = imgfile + count;         //
用图文件名称加流水号当作控件的名称
            pic.Image = new Bitmap(imgfile);    //
读取图文件,显示在pictureBox
            pic.Parent = parent;                //
设定控件的的Parent,功能类似this.Controls.Add(pictureBox1);
            pic.Click += new EventHandler(pic_Click); //
设定所有的PictureBox的Click事件都呼叫相同的事件函数
        }
       
        /// <summary>
        ///
这个是PictureBox.Click的事件函式,
        ///
所有动态产生的PictureBox在Click的时候,都会呼叫此事件
        /// </summary>
        /// <param name="sender">
代表目前click的pictureBox对象</param>
        /// <param name="e"></param>
        void pic_Click(object sender, EventArgs e)
        {
            //
将sender转型成PictureBox
            PictureBox pic = sender as PictureBox;
           
            if (null == pic) return;

            string name = pic.Name; // 取出pictureBox的名称

            // 以下就你读取到的名称去处理你要做的事情
        }

原文地址:https://www.cnblogs.com/xiaoye207/p/1500278.html