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 ...
随机推荐
- Wowza 部署 安装 配置 测试 直播
下载,最好用快的IP下好后传到需要的节点上,下面链接不能下载的情况下百度谷歌必应找资源,jdk旧版在oracle需登录方可下载 JDK1.6 wget -c http://dl.download.cs ...
- 使用 XML 配置 MyBatis
构建 SqlSessionFactory 最常见的方式是基于 XML 配置(的构造方式).下面的 mybatis-config.xml 展示了一个 典型的 MyBatis 配置文件的样子: XML C ...
- java数组中取出最大值
class Demo{ public static void main(String []args){ int[] arr={3,54,456,342,2798}; int max=getMax(ar ...
- DOCKER 从入门到放弃(一)
前言 关于docker的各种概念已有各位大神珠玉在前,请各位自行查看,本系列的目的是各种详细操作步骤 各种概念特别推荐CloudMan的3篇blog: http://www.cnblogs.com/C ...
- Student implements java.io.Serializable
package JBJADV003; public class Student implements java.io.Serializable { private String name; priva ...
- Watson API - Personality Insight For Certificate
Personality Insight For Certificate 1.Describe the intended use of the Personality Insights service ...
- C#字典转换成where条件
where 1=1 and Dictionary[key1]=Dictionary[value1] and Dictionary[key2]=Dictionary[value3].... /// &l ...
- LCS 算法实现
动态规划算法 #include <iostream> #include <string.h> #include <algorithm> #include <m ...
- 详细解析 JavaScript 获取元素的坐标
引言 最近突然看到了有关图片懒加载的问题,大致意思就是初始状态下页面只加载浏览器可视区域的图片,剩余图片在当浏览器可视区域滚动到其位置时才开始加载.貌似现在许多大型网站都有实现懒加载,所以我便就此问题 ...
- 使用joda-time工具类 计算时间相差多少 天,小时,分钟,秒
下面程序使用了两种方法计算两个时间相差 天,小时,分钟,秒 package jodotest; import java.text.ParseException; import java.text.Si ...