zoukankan      html  css  js  c++  java
  • 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);
            }

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

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

  • 相关阅读:
    linux mint使用起來比較穩定
    ubntu下的记录软件brasero ,mint内置
    [Enterprise Library]Data (二)DataCollection
    jquery 获取标签名
    谁会做logo呢
    供用淘宝卖家常用的称谓:各位亲,跨年,诸事顺利~
    rails缓存 学习
    test
    jquery 复习基础知识
    开机改用nginx启动,停止apache2的开机启动
  • 原文地址:https://www.cnblogs.com/ExDevilLee/p/3444153.html
Copyright © 2011-2022 走看看