C#的委托与Java的自定义接口的异曲同工的同步操作
C#的委托(以WinForm为例)
在子窗体(ChildFrm)中定义一个委托
this.CaptureListener(callback);//子窗体触发委托事件,以告诉调用的窗体
/// <summary>
/// 子窗体:在子窗体中定义一个委托,供调用都设置侦听,并可与此窗体的某个事件同时执行自身指定的事件
/// 定义 委托
/// </summary>
public partial class ChildFrm : Form
{
public ChildFrm()
{
InitializeComponent();
} /// <summary>
/// 定义委托(同Java中的接口)
/// </summary>
/// <param name="callback">可以是任意类型</param>
public delegate void CaptureListenEvent(string callback); /// <summary>
/// 声明委托
///from:博客园-曹永思http://www.cnblogs.com/yonsy/p/3631116.html
/// </summary>
public CaptureListenEvent CaptureListener = null; /// <summary>
/// 调用者设置侦听
/// </summary>
/// <param name="CaptureListener"></param>
public void SetCaptureListener(CaptureListenEvent CaptureListener)
{
this.CaptureListener = CaptureListener;
} /// <summary>
/// 被侦听的窗体执行一个事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
WiteContent();//
}
/// <summary>
/// 写入值
/// </summary>
public void WiteContent()
{
string callback = richTextBox1.Text; //触发被侦听的委托
this.CaptureListener(callback);//子窗体触发委托事件,以告诉调用的窗体
//this.CaptureListener.Invoke(callback);//子窗体触发委托事件,以告诉调用的窗体
} }
Code By 博客园-曹永思
在主窗体(MainFrm)设置对子窗体委托的侦听
//设置侦听,监视子窗体的指定委托,并指定委托子窗体的执行的方法
frm.SetCaptureListener(new ChildFrm.CaptureListenEvent(CaptureInfo));
/// <summary>
/// 主窗体
/// 调用个关联子窗体
/// 设置子窗体中的侦听
/// </summary>
public partial class MainFrm : Form
{
//子窗体
ChildFrm frm = new ChildFrm(); public MainFrm()
{
InitializeComponent(); //设置侦听,监视子窗体的指定委托,并指定委托子窗体的执行的方法
frm.SetCaptureListener(new ChildFrm.CaptureListenEvent(CaptureInfo));
} private void button1_Click(object sender, EventArgs e)
{
//打开子窗体
frm.Show();
} /// <summary>
/// 子窗体触发委托事件时,主窗体同时会执行的方法
///code by:博客园-曹永思
/// </summary>
/// <param name="callback"></param>
public void CaptureInfo(string callback)
{
richTextBox1.Text = richTextBox1.Text + callback + "\n";
}
}
=====================================================================
Java的自定义接口
定义接口的类(HuangLiMonthActivity):
//定义接口的类: /*
* 声明一个接口
*/
public static YueLiClickListener yueLiClickListener; /*
* 设置接口侦听
*/
public static void setYueLiClickListener(YueLiClickListener clickListener) {
yueLiClickListener = clickListener;
} //在某个方法中绑定侦听
//绑定触发的事件-调用都实现这个方法以处理自身的逻辑
yueLiClickListener.OnClick(iyear, imonth, iday);
调用接口的类(HuangLiMonthPanelActivity):
//实现接口绑定的侦听事件
YueLiClickListener clickListener = new YueLiClickListener() { @Override
public void OnClick(int year, int month, int day) {
// TODO Auto-generated method stub
getRiLiData(year, month, day);
mYear = year;
mMonth = month;
mDay = day;
}
}; //设置接口侦听
HuangLiMonthActivity.setYueLiClickListener(clickListener);
C#的委托与Java的自定义接口的异曲同工的同步操作的更多相关文章
- Java NIO Path接口和Files类配合操作文件
Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...
- Java中 Comparator接口 与Comparable 的区别
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt159 comparator接口与Comparable接口的区别 1. Com ...
- 使用Java代码自定义Ribbon配置
很多场景下,需要实现不同的微服务采用不同的策略,例如修改Ribbon的负载均衡规则等.Spring Cloud允许使用Java代码自定义Ribbon的配置. 在Spring Cloud中,Ribbon ...
- java中自定义注释@interface的用法
一.什么是注释 说起注释,得先提一提什么是元数据(metadata).所谓元数据就是数据的数据.也就是说,元数据是描述数据的.就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义.而J ...
- JNI的又一替代者—使用JNR访问Java外部函数接口(jnr-ffi)
1. JNR简单介绍 继上文“JNI的替代者—使用JNA访问Java外部函数接口”,我们知道JNI越来越不受欢迎,JNI是编写Java本地方法以及将Java虚拟机嵌入本地应用程序的标准编程接口.它管理 ...
- java注解自定义使用
Java提供了4种注解,专门负责新注解的创建: @Target: 表示该注解可以用于什么地方,可能的ElementType参数有:CONSTRUCTOR:构造器的声明FIELD:域声明(包括enum实 ...
- spring data 自定义接口
1 spring data jpa 虽然说spring data 提供了很多DAO 接口,但是依然可能不能满足我们日常的使用,所以,有时我们需要自定义接口方法.自定义接口方法步骤如下: 1. 创建自 ...
- Java 线程--实现java.lang.Runnable接口实现线程
Java线程的第一种实现方式,主要分两步,第一步是继承java.lang.Thread; 第二步是重写run()方法.接下来我们来看Java线程的第二种实现方式,也是分为两步,第一步,写一个类实现ja ...
- java集合类型接口和实现类个人总结
转载:http://blog.csdn.net/qingchunbusanchang/article/details/39576749 java的集合是一个比较综合的概念,相关的知识有很多的博客里面做 ...
随机推荐
- 简述 OAuth 2.0 的运作流程(转)
原文地址:http://www.barretlee.com/blog/2016/01/10/oauth2-introduce/ 本文将以用户使用 github 登录网站留言为例,简述 OAuth 2. ...
- 【C++】:STL迭代器使用---[容器::iterator iter;]
参考文章:http://blog.csdn.net/qq_23100787/article/details/51388163 迭代器这种东西,就是为了使访问简单!! 容器::iterator iter ...
- [Z]sql优化
前言:平常写的SQL可能主要以实现查询出结果为主,但如果数据量一大,就会突出SQL查询语句优化的性能独特之处.一般的数据库设计都会建索引查询,这样较全盘扫描查询的确快了不少.下面总结下SQL查询语句的 ...
- C语言常用关键字及运算符操作
1.关键字 (1)数据类型 char 1字节,8bit==256 int long,short unsgined ,signed 无符号为 ...
- ThreeJS中的点击与交互——Raycaster的用法
基础概念 坐标系 我们的手机屏幕是二维的,但是我们展示物体的世界是三维的,当我们在构建一个物体的时候我们是以一个三维世界既是世界坐标来构建,而转化为屏幕坐标展示在我们眼前,则需要经历多道矩阵变化,中间 ...
- PHP 根据两点的坐标计算之间的距离
define('PI',3.1415926535898); define('EARTH_RADIUS',6378.137); //计算范围,可以做搜索用户 function GetRange($lat ...
- c#task list waitall task waitany
上边的主线程会被卡住: 7个同时开发,谁先完成之后, 需要完成某个工作,可以用waitany 2: 不卡界面的做法 加上以上命令就不卡,是子线程做的事 //Task task = taskFactor ...
- 78k的text 文件,输出到textbox 竟然用了20几秒的原因
开始查资料以为是io读取的,磁盘速度慢的之类的,后来一想,text 又不是几十万条数据,才那么两千行,咋回事. 原来是循环中不停的修改textbox值导致的. 总结: 比较大的运算,特别是大的循环, ...
- Java中关键字static的使用
static 关键字 1).static只能修饰成员变量或成员方法,所有非静态是对象相关的,所有静态是类相关的. 2)被static修饰的成员变量成员方法独立于该类的任何对象,它不依赖类的特定的实例, ...
- 码代码的小女孩(来自noip贴吧)
天冷极了,下着雪,又快黑了.这是NOIP的前夜.在这又冷又黑的晚上,一个衣衫破烂的小女孩在机房敲着代码.她从班里逃出来的时候还拿着一本算导,但是有什么用呢?那是一本很破旧的书--那么大,一向是她妈妈垫 ...