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);
        }

 


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

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

posted on 2013-11-26 21:15  ExDevilLee  阅读(5312)  评论(0编辑  收藏  举报

导航