C#实现PictureBox控件的动态添加及在每个图像左上角添加一个复选框

编程工具:VS2005

实现方法:

1、前提,在窗体中添加一个FlowLayoutPanel容器(Name="pnlTest"),用来存放动态添加的PictureBox控件。(注:之所以用FlowLayoutPanel容器,是为了方便图像控件的自动排列,这样就不用算每个图像控件的位置了,嘿嘿~偷个懒)

2、动态生成PictureBox控件的Code块:

        /// <summary>

        /// 动态添加图像控件

        /// </summary>

        private void AddPicControl()

        {

            PictureBox pic = new PictureBox();

            //设置图像相关属性及事件

            pic.Name = string.Format("pic{0}", this.pnlTest.Controls.Count);//Name属性

            pic.Width = 200; //Size-Width

            pic.Height = 200; //Size-Height

            pic.BorderStyle = BorderStyle.FixedSingle;//边框样式:单线边

            pic.SizeMode = PictureBoxSizeMode.Zoom;//设置图像SizeMode=Zoom

            pic.Cursor = Cursors.Hand;//鼠标悬浮样式:小手

            pic.Click += this.picBox_Click;//事件:单击控件

            pic.DoubleClick += this.picBox_DoubleClick;//事件:双击控件

            this.AddCheckBoxControlIntoPicBox(pic);//添加复选框

            pic.ContextMenuStrip = this.cmsTest;//绑定右键菜单

            //向容器中添加一个图像控件

            this.pnlTest.Controls.Add(pic);

        }

 

3、有时候为了实现这样的效果:选择容器内的多张图像并直观的显示已选中的图像。

  之前一直没有找到合适的显示方法,曾用过图像边框样式及颜色来区分,但是效果非常不好。

  后来在某个朋友的提醒下,突然恍然大悟:我可以将图像控件作为一个容器,然后在这个容器上添加一个复选框控件。

  于是,就开始研究起来,下面附上在图像控件中添加复选框控件的Code块:

        /// <summary>

        /// 在图像控件中添加CheckBox控件

        /// </summary>

        private void AddCheckBoxControlIntoPicBox(PictureBox p_PicBox)

        {

            CheckBox chkBox = new CheckBox();

            chkBox.Name = string.Format("chkBoxOf{0}", p_PicBox.Name);

            chkBox.Text = string.Empty;

            chkBox.AutoSize = true;//若不设置此属性,会出现比较多的白色边框,比较难看

            chkBox.Location = new System.Drawing.Point(-1, -1);//相对位置:左上角



            p_PicBox.Controls.Add(chkBox);

        }

 


小弟才疏学浅,难免会有错误,若您发现了请及时指出,谢谢!

写此文只为记录编程过程中积攒的思想与经验,若您有更好的思路希望您能给我留言,谢谢啦!~

你可能感兴趣的:(复选框)