动态生成PictureBox控件,涉及:PictureBox控件和flowLayoutPanel面板

一、概述

flowLayoutPanel面板是一系列控件的容器,有关详细的使用方法留待以后总结。

二、问题提出

问题提出:点击按钮,扫描指定文件夹并将其中的所有图片放在flowLayoutPanel面板内。换句话说,就是在flowLayoutPanel面板内动态生成N个PictureBox控件。

此外,还有一个要求,N是变化的,有时显示5个图片,有时显示20个图片。这就要求动态生成新的控件之前先销毁已经存在的控件。

三、销毁代码

销毁控件代码:

box[v].Dispose();
box[v] = null;
GC.Collect();

四、示例代码

        private void button4_Click(object sender, EventArgs e)
        {
            if (N!=0)
            {
                for (int v = 0; v < N; v++)
                {
                    box[v].Dispose();
                    box[v] = null;
                    GC.Collect();
                }
            }

            N = int.Parse(comboBox_NUM.Text); //获取要展示的图片数量;
            box = new PictureBox[N];

            DirectoryInfo dir = new DirectoryInfo("c:\\pic");
            ArrayList JpgList = new ArrayList();//链表存放图片全名;
            foreach (FileInfo file in dir.GetFiles("*.jpg")) //得到所有图片全名存入list;
            {
                JpgList.Add(file.FullName);
            }
            int i = 0;
            foreach (string value in JpgList)
            {
                if (i < N)
                {
                    box[i] = new PictureBox();
                    box[i].Size = new System.Drawing.Size(105, 105);//图片框的大小;
                    box[i].Location = new System.Drawing.Point(0, 12 + i * 100);//图片排放位置;
                    box[i].Image = Image.FromFile(value);//图片地址;
                    flowLayoutPanel1.Controls.Add(box[i]); //flowLayoutPanel增加图片
                    i++;
                }
            }
        }
时间: 2025-01-01 10:45:37

动态生成PictureBox控件,涉及:PictureBox控件和flowLayoutPanel面板的相关文章

winform WebBrowser控件中,cs后台代码执行动态生成的js

很多文章都是好介绍C# 后台cs和js如何交互,cs调用js方法(js方法必须是页面上存在的,已经定义好的),js调用cs方法, 但如果想用cs里面执行动态生成的js代码,如何实现呢? 思路大致是这样的,cs动态插入js到html上,cs执行html插入的js方法代码. 封装好的方法: /// <summary> /// webbrowser执行脚本 /// </summary> /// <param name="web">传入WebBrowser 

asp.net动态生成按钮Button控件

1.动态生成button控件及响应服务端和客户端事件 void BindButtons(){ foreach (var item in items) { Button Btn = new Button(); Btn.OnClientClick = "showLoading();return true;"; //客户端事件 //Btn.Attributes.Add("OnClientClick ", "this.disabled=true;return tr

控件的动态生成与操作

事件的三要素:事件源,事件数据,事件处理程序 例如: //sender-事件源,EventArgs-事件数据,函数体就是处理程序 private void button1_Click(object sender, EventArgs e) { Button btn = sender as Button; //把事件源具像化. MessageBox.Show(btn.Text); //显示事件源的文本. } 案例:动态生成一个按钮布局,并作出一个模拟抽奖的过程 private void Form4

第二章实例:动态生成View控件例子---小球跟随手指滑动

package mydefault.packge; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.os.Bundle; import androi

Silverlight日记:动态生成DataGrid、行列装换、动态加载控件

本文主要针对使用DataGrid动态绑定数据对象,并实现行列转换效果. 一,前台绑定 <sdk:DataGrid x:Name="dataGrid2" Style="{StaticResource ResourceKey=safeDataGrid2}" /> using System; using System.Collections; using System.Collections.Generic; using System.Collections.

初步探讨WPF的ListView控件(涉及模板、查找子控件)

本文结合模板的应用初步介绍ListView的应用 一.Xaml中如何建立数据资源 大部分数据都会来自于后台代码,如何Xaml同样的建立数据源呢?比如建立一个学生List: 首先引入命名空间: xmlns:c="clr-namespace:System.Collections;assembly=mscorlib" 然后代码如下:   <c:ArrayList x:Key="stuList">            <local:Student Id=

构建施耐德楼控系统数据库后台服务器示例工程五(JAVA动态生成类)

在做数据库简易工具的过程中遇到了这么一个问题,即程序部署在tomcat下启动运行后,我们无法事先定义数据库中后续创建的表结构的Hibernate Bean对象,这样就需要我们在服务器运行起来后动态创建bean对象.cglib这个开源库即可解决我们的问题,动态创建JAVA对象. 1.cglib开源库简介 CGLIB(Code Generation Library)是一个开源项目,是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口. 反编译后CGLIB结构

winform-事件之公共控件

事件参数: object sender - 事件主体 EventArgs e - 事件数据 函数体 - 我进行的操作 制作思路: 做一个按钮,就只想这一个按钮的功能就行了 如果需要其它按钮来进行辅助,这个情况 只会出现在,你这个按钮做不下去了,才需要去考虑是否有其它按钮可以来帮忙的 ------------------------------------------------------------------------------------------------------------

VS2010/MFC常用控件:图片控件Picture Control

图片控件Picture Control 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了. 图片控件静态和动态加载图片 鸡啄米下面为大家演示如何为图片控件静态和动态加载位图图片. 1. 图片控件静态加载图片 1)创建一个基于对话框的MFC工程,名称设置为“