zoukankan      html  css  js  c++  java
  • 动态生成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的名称

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

  • 相关阅读:
    C# NameValueCollection
    visual studio使用技巧创建自己代码片段
    C#在DataTable中使用LINQ
    [转]C# 中的.pdb/ .vshost.exe/ .vshost.exe.manifest文件讨论
    C#自定义控件在添加引用后不显示在工具箱的解决方法
    Java 工程师
    redis-CRC16
    sql server-当天日期减去一天 应该如何写
    清除访问Windows共享时缓存的凭据
    cmd下查看当前登陆用户
  • 原文地址:https://www.cnblogs.com/xiaoye207/p/1500278.html
Copyright © 2011-2022 走看看