博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 委托使用场景
阅读量:3949 次
发布时间:2019-05-24

本文共 717 字,大约阅读时间需要 2 分钟。

A1窗口打开B窗口,B窗口向A1窗口传值时使用到委托。只有A1打开B窗口时,可以直接在B调用A1中的(public)方法,这看不出委托的作用(前提是知道B窗口是A1窗口打开的)。

当有窗口A2也打开B窗口,同时需要B窗口返回值时,如果也在B中直接调用A2的(public)方法,就需要在B中判断是A1还是A2调用它,然后调用对应的窗口的方法来实现返回数据(前提是知道B窗口只被A1、A2调用)。

当打开B窗口的有n(未知)个时,显然直接调用父窗口的(public)方法这种做法已经不能实现数据反馈功能了。场景例如:B是下载窗口,下载完成时要向父窗口(A1、A2……)反馈数据。

委托代码例:

// 父窗口(A1): B b = new B();b.FeedBackEvent += new B.FeedBackHandler(DownLoad); private void DownLoad(string msg){
……} // 子窗口(B):public delegate void FeedBackHandler(string message);public event FeedBackHandler FeedBackEvent; private void button1_Click(object sender, EventArgs e){
string message = "下载完成"; this.FeedBackEvent(message);}

这时,需要打开B窗口且需要返回数据的父窗口,可以通过注册B的委托(FeedBackEvent)来实现,且B窗口不用去关注是谁调用了自己

转载地址:http://sjkzi.baihongyu.com/

你可能感兴趣的文章
android 系统关机,重启
查看>>
android系统关机流程
查看>>
malloc,calloc,realloc等内存分配函数区别
查看>>
android JNI 学习笔记
查看>>
linux内核基本数据类型总结
查看>>
linux内核基本数据类型总结
查看>>
strstr
查看>>
isspace
查看>>
tolower
查看>>
Linux 2.6 字符设备驱动程序
查看>>
Linux 用户态与内核态的交互——netlink 篇
查看>>
Android 的用户层 uevent处理机制
查看>>
linux内核register_chrdev_region()系列函数
查看>>
嵌入式C语言中的volatile关键字
查看>>
Linux驱动程序开发 - 设备驱动模型初探
查看>>
Android之 BatteryService
查看>>
Android init初始化程序分析
查看>>
浅析dev目录下设备文件mknod节点gid,uid和mode的如何方便设置
查看>>
Android 加速度传感器 (G-Sensor) 收
查看>>
Linux 下如何 做patch 和打patch
查看>>