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的集合是一个比较综合的概念,相关的知识有很多的博客里面做 ...
随机推荐
- springmvc+logback项目的日志搭建
一.重写HTMLLayout 两个自定义类:LzhHTMLLayoutBase和LzhHTMLLayout LzhHTMLLayoutBase代码如下: package top.liaozhengha ...
- android抽屉效果
所谓抽屉 是区别于侧滑菜单 他不会把内容区域挤掉 他只是覆盖在内容区域 下边一个布局文件 一个代码 可以说的就是布局文件就是 <android.support.v4.widget.Dr ...
- Java并发-ThreadGroup获取所有线程
一:获取当前项目所有线程 public Thread[] findAllThread(){ ThreadGroup currentGroup =Thread.currentThread().getTh ...
- PAT 1051 复数乘法(15 )(代码+思路)
1051 复数乘法(15 分) 复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i2=−1:也可以写成极坐标下的指数形式 (R×e(Pi)),其 ...
- python爬虫_简单使用百度OCR解析验证码
百度技术文档 首先要注册百度云账号: 在首页,找到图像识别,创建应用,选择相应的功能,创建 安装接口模块: pip install baidu-aip 简单识别一: 简单图形验证码: 图片: from ...
- BZOJ 3932 [CQOI2015]任务查询系统 - 差分 + 主席树
Solution 差分就好了, 在$s_i$ 的点+1, $e_i + 1$ 的点 - 1. 查询的时候注意$l == r$ 要返回 $k * b[l]$ ,而不是$sum[node] $因为当前位置 ...
- [Robot Framework] Robot Framework怎么调试?
Robot Framework怎么debug? 在eclipse里面安装一个插件,就可以debug robot framework的project. 插件下载地址: https://github.co ...
- NServiceBus消息重播
https://docs.particular.net/tutorials/message-replay/ 链接:https://pan.baidu.com/s/1KdWvpfZYZ2wUivkt3B ...
- Koko Eating Bananas LT875
Koko loves to eat bananas. There are N piles of bananas, the i-th pile has piles[i] bananas. The g ...
- IOS初级:UIView和UIButton
AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDict ...