动态生成PictureBox控件,涉及:PictureBox控件和flowLayoutPanel面板
一、概述
flowLayoutPanel面板是一系列控件的容器,有关详细的使用方法留待以后总结。
二、问题提出
问题提出:点击按钮,扫描指定文件夹并将其中的所有图片放在flowLayoutPanel面板内。换句话说,就是在flowLayoutPanel面板内动态生成N个PictureBox控件。
此外,还有一个要求,N是变化的,有时显示5个图片,有时显示20个图片。这就要求动态生成新的控件之前先销毁已经存在的控件。
三、销毁PictureBox控件
销毁控件代码:
box[v].Dispose();
box[v] = null;
GC.Collect();
四、示例代码
N = int.Parse(comboBox_NUM.Text);
//---------------------
DirectoryInfo dir = new DirectoryInfo("c:\\pic");
ArrayList JpgList = new ArrayList();
foreach (FileInfo file in dir.GetFiles("*.jpg"))
{
JpgList.Add(file.FullName);
}
int num = JpgList.Count;
//----------------------
if(num!=)//如果文件夹不为空;
{
if (box!=null) //如果有生成的控件,销毁控件;
{
for (int v = ; v < CreatedNum; v++)
{
box[v].Dispose();
box[v].Image = null;
GC.Collect();
}
}
if (N >= num)
N = num;//如果选择显示的数量大于实际图片数量; CreatedNum = N;//实际动态生成的数量;
box = new PictureBox[CreatedNum]; int i = ;
foreach (string v in JpgList)
{
if (i < N)
{
box[i] = new PictureBox();
box[i].Size = new System.Drawing.Size(, );//图片框的大小;
box[i].Location = new System.Drawing.Point(, + i * );//图片排放位置;
box[i].Image = Image.FromFile(v);//图片地址; box[i].SizeMode = PictureBoxSizeMode.Zoom;
//box[i].BorderStyle = BorderStyle.FixedSingle; flowLayoutPanel1.Controls.Add(box[i]); //flowLayoutPanel增加图片
i++;
}
}
动态生成PictureBox控件,涉及:PictureBox控件和flowLayoutPanel面板的更多相关文章
- 动态生成tr,并将其下控件的值拼接后传到后台并保存
有两个表(主表和子表),现在需要根据主表某一个字段动态的生成记录(一条记录就一个tr),然后再讲tr下控件的各个值取出来,传到后台,并保存到子表. html代码: <!--#for(Record ...
- asp.net动态生成按钮Button控件
1.动态生成button控件及响应服务端和客户端事件 void BindButtons(){ foreach (var item in items) { Button Btn = new Button ...
- winform WebBrowser控件中,cs后台代码执行动态生成的js
很多文章都是好介绍C# 后台cs和js如何交互,cs调用js方法(js方法必须是页面上存在的,已经定义好的),js调用cs方法, 但如果想用cs里面执行动态生成的js代码,如何实现呢? 思路大致是这样 ...
- C# winform控件之PictureBox详解
PictureBox表示用于显示图像的 Windows 图片框控件https://msdn.microsoft.com/zh-cn/library/system.windows.forms.pictu ...
- 动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据
动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据:由存储过程决定,如果编写的存储过程可以生成需要呈现的表格则直接绑定,否则要动态生成表格
- 第二章实例:动态生成View控件例子---小球跟随手指滑动
package mydefault.packge; import android.app.Activity; import android.content.Context; import androi ...
- Silverlight日记:动态生成DataGrid、行列装换、动态加载控件
本文主要针对使用DataGrid动态绑定数据对象,并实现行列转换效果. 一,前台绑定 <sdk:DataGrid x:Name="dataGrid2" Style=" ...
- WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日
好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修 ...
- WPF 中动态创建、删除控件,注册控件名字,根据名字查找控件
动态创建控件 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindName("Name") as 控 ...
随机推荐
- Android View 深度分析requestLayout、invalidate与postInvalidate
前言 前几篇文章中,笔者对View的三大工作流程进行了详细分析,而这篇文章则详细讲述与三大工作流程密切相关的两个方法,分别是requestLayout和invalidate,如果对Viwe的三个工作流 ...
- MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring
Mybatis在与Spring集成的时候可以配置 MapperFactoryBean来生成Mapper接口的代理. 例如 <bean id="userMapper" clas ...
- 举个通俗易懂的例子告诉你IAAS,SAAS,PAAS的区别
作者:何足道链接:https://www.zhihu.com/question/21641778/answer/62523535来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- go语言使用go-sciter创建桌面应用(二) ui元素查找,增加,删除,修改
我们可以通过go-sciter给我们提供的方法,方便的对html,css编写的UI界面进行增删改查. demo3.go代码如下: package main; import ( "github ...
- python 基础数据类型 之 列表
列表:定义 和特性 列表定义和创建: 定义:[,]内以逗号分隔,按照索引,存放各种数据类型,一般没有限制,每个位置代表一个元素 range_create = list(range(0, 10))pri ...
- waf相关
google上搜索下面信息: waf site:klionsec.github.io 有几篇比较有意思的问题: https://klionsec.github.io/2017/07/09/nginx- ...
- linux学习第二天 (Linux就该这么学)
2018年11月10日,今天是学习的第二天 今天学习了安装vmware workstation12的安装及怎么安装 redhat7系统,在新建虚拟机时注意要选择“稍后安装操作系统”要vmwark wo ...
- String、StringBuffer、StringBuilder和StringTokenizer的区别
1)String.StringBuffer.StringBuilder都用于字符串操作,其中,String是不可变类,即String对象一旦被创建,其值不能被修改,而StringBuffer和Stri ...
- [Robot Framework] 搭建Robot Framework和RIDE(Robot Framework GUI) 的环境
在windows x64的环境上进行安装,集成Selenium2和AutoIt的libraries,以下安装步骤在win 7,win 8.1,win 10, win 2012 R2上测试通过 1. 下 ...
- SQL 中的Begin...End语句
Begin...End通常用来表示一个语句块,其内部的代码可以包含一组T-SQL语句,可以理解为高级语言中的{},这样在使用while循环时才知道判断什么时候结束.