WinFrom通过委托传递事件
今天一个功能需要动态创建pictruebox然后根据时间来倒叙显示,一开始对于这个需求摸不着头脑,后来在公司的大神帮助下实现了,话不多说具体实现上代码了;
1、动态添加控件并倒叙
首先添加一个用户控件里面放pictruebox使其动态创建(用户控件的用法大家自行百度哈)
然后又一个用户控件集合用来排序这个
var picture = new CapturePicture()
{
CreateTime = DateTime.Now
};
picture.SetPicture(savePath);
picture.Width = pnlCapturePictureList.Width - ;
picture.Margin = new Padding();
picture.OnPictureClick += Picture_OnPictureClick;
pictures.Add(picture); DisplayCapturePictures();
这个capturePicture是用户控件,这个OnPictureClick是这个图片的点击事件 这里需要用到委托后面再说如何实现
下面是如何实现倒序的代码
private void DisplayCapturePictures()
{
this.pnlCapturePictureList.Controls.Clear();
var pics = pictures.OrderByDescending(x => x.CreateTime);
foreach (var capturePicture in pics)
{
this.pnlCapturePictureList.Controls.Add(capturePicture);
}
}
先清除用户控件所有的图片控件
在集合里面的排序好的数据循环添加到用户控件里面就大功告成了。
2,、点击事件的委托
首先定义一个委托,这里这个CapturePictureEventArgs定义字段能实现传参,如果不需要传参可以直接把
CapturePictureEventArgs e 换成 EventArgs e
public delegate void CapturePictureClick(object sender, CapturePictureEventArgs e);
/// <summary>
/// 参数
/// </summary>
public class CapturePictureEventArgs : EventArgs
{
public CapturePictureEventArgs(string picturePath)
{
PicturePath = picturePath;
} public string PicturePath { get;private set; }
}
然后在用户控件里面注册事件
//注册事件
public event CapturePictureClick OnPictureClick;
//picturePath是图片路径是一个参数可以不传
private void pictureBox1_Click(object sender, EventArgs e)
{
if (OnPictureClick != null)
{
OnPictureClick(this.pictureBox1,new CapturePictureEventArgs(PicturePath));
}
}
注册完然后开始调调用
picture.OnPictureClick +=
双击tab键就出来委托事件啦!
picture.OnPictureClick += Picture_OnPictureClick;//绑定事件 private void Picture_OnPictureClick(object sender, CapturePictureEventArgs e)
{
PictureBox pic = (PictureBox)sender;
//释放图片资源
img.Dispose();
ImgFrom imgf = new ImgFrom();
imgf.ShowDialog();
int num = ;
string desc = "";
if (imgf.DialogResult == DialogResult.OK)
{
num = imgf.Num;
desc = imgf.Desc;
Upload(num, desc, pic);
}
}
======================================================================最后来个总结吧======================================================================
委托关键字 :delegate
事件关键字:event
WinFrom通过委托传递事件的更多相关文章
- 【.NET基础】--委托、事件、线程(1)
1,委托 是存放方法的指针的清单,也就是装方法的容器 A, 新建winform项目[01委托],项目中添加dg_SayHi.cs 委托类 用于存储方法 namespace _01委托 { //定义委托 ...
- 转载 【.NET基础】--委托、事件、线程(1) https://www.cnblogs.com/chengzish/p/4559268.html
[.NET基础]--委托.事件.线程(1) 1,委托 是存放方法的指针的清单,也就是装方法的容器 A, 新建winform项目[01委托],项目中添加dg_SayHi.cs 委托类 用于存储方法 ...
- .NET面试题系列[7] - 委托与事件
委托和事件 委托在C#中具有无比重要的地位. C#中的委托可以说俯拾即是,从LINQ中的lambda表达式到(包括但不限于)winform,wpf中的各种事件都有着委托的身影.C#中如果没有了事件,那 ...
- .NET基础拾遗(4)委托、事件、反射与特性
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...
- [转载]C#深入分析委托与事件
原文出处: 作者:风尘浪子 原文链接:http://www.cnblogs.com/leslies2/archive/2012/03/22/2389318.html 同类链接:http://www.c ...
- [转载]C#委托和事件(Delegate、Event、EventHandler、EventArgs)
原文链接:http://blog.csdn.net/zwj7612356/article/details/8272520 14.1.委托 当要把方法作为实参传送给其他方法的形参时,形参需要使用委托.委 ...
- C#之委托与事件
委托与事件 废话一堆:网上关于委托.事件的文章有很多,一千个哈姆雷特就有一千个莎士比亚,以下内容均是本人个人见解. 1. 委托 1.1 委托的使用 这一小章来学习一下怎么简单的使用委托,了解一些基本的 ...
- [ASP.NET MVC 大牛之路]02 - C#高级知识点概要(1) - 委托和事件
在ASP.NET MVC 小牛之路系列中,前面用了一篇文章提了一下C#的一些知识点.照此,ASP.NET MVC 大牛之路系列也先给大家普及一下C#.NET中的高级知识点.每个知识点不太会过于详细,但 ...
- .NET委托和事件
.net学习之委托和事件 1.什么是委托 通俗的说:委托就是一个能够存储符合某种格式(方法签名)的方法的指针的容器 上传图片: 2.委托语法 准备一个方法:string Hello(string ...
随机推荐
- 实现最简单PHP MVC实例
关于网上大多MVC的简介我就不再多说,就是Model(模型)View(视图) C(控制器)这里作为一个刚入门PHP MVC框架的我,这里我搭建一个最简易的mvc项目,从而理解MVC 1在apache服 ...
- 深入浅出 spring-data-elasticsearch - 基本案例详解(三
『 风云说:能分享自己职位的知识的领导是个好领导. 』运行环境:JDK 7 或 8,Maven 3.0+技术栈:SpringBoot 1.5+, Spring Data Elasticsearch ...
- Linux系统下源码安装rz/sz命令
背景:在windows环境下,使用xshell远程连接公司内部做的一个类似centos的系统,但该linux系统yum install有问题,只能源码安装. root 账号登陆后,依次执行以下命令: ...
- postgresql初体验
docker pull orchardup/postgresql docker run -d -p 5432:5432 -e POSTGRESQL_USER=test -e POSTGRESQL_PA ...
- VMWare、KVM、Virtualbox克隆或复制Linux虚拟机后eth0找不到的解决方案
快速处理办法: cat /etc/sysconfig/network-scripts/ifcfg-eth0 sed -i '/UUID/d' /etc/sysconfig/network-script ...
- request.getParameter()及解决数据库中文乱码问题——实习第七天
今天老师让我们自己做一个小项目,我开始着手于实现这个小项目.途中遇到过几个小问题,在此做个小记录, 相信后期还是会借鉴的. 1,从前台传入数据给后台传入数据,并没有传入成功: 输出的为Null. 当然 ...
- AospExtended K3 Note最新官方版 Android7.1.2 极速 省电 流畅 Galaxy XIAOMI Moto Lenovo Coolpad 均支持
AospExtended 最新官方版 Android7.1.2 极速 省电 流畅 Galaxy XIAOMI Moto Lenovo Coolpad 均支持 之前用过1629开发版等,体验了很 ...
- 【Android Developers Training】 106. 创建并检测地理围栏
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 设置select标签的高度
当无法给select标签设置高度的时候,给他加一个背景色,就可以设置了.
- VB6之GDI+加载PNG图片
原生的VB6不支持PNG个图片,因为刚有VB的时候还没有PNG的概念呢.不过,利用GDI+加载解析个PNG简直是砍瓜切菜般简单. GDI+的模块是我在网上下载的,地址应该是:http://vistas ...