不得不明白的vb.net Delegate-只供入门

Event Delegate 在好多地方多看到了,比如在学习web user control 的时侯,还有vb.net remoting object 的时候。

我看了不少文章后,也不是很明白。我在这里写下来,主要是为了我自己以后的回故。同时,也想让大家参考。

要理解event delegate, 当然要先明白什么是event. 其实简单的想,就是"回叫"的机制,她解决一个依赖的问题。 比如真实世界里你的经理让你算算今年的税款。 想象一下,你的经理他每隔5分钟会打电话给你,问你做完了吗。 一个到半夜他也没歇着, 当然你也没歇着。 没有EVENT方法,就得写成LOOP语句去不停的检查一个任务是否完成。这和那个经理的做法类似。

后来,到第二年,经理又让你算算这年的税款。这次你主动说了,这次我什么时候做完,什么时候打电话给你。 经理好象还没听明白。你又说了一边"你别打给我,我会打给你的"。你算完税后, 打电话给经理的动作就是一个事件, 或者说就是“回叫”。

回到编成上,一共有三种回叫方式, 第一种“interface”, 第二种“function pointer (方程指针)”, 第三种“delegate (委托)”。 我对第三种方式有点了解,就是委托。微软webcast上有李建忠老师的观察者模式的视频教程, 他说委托其实就是观察者模式。大家可以去下载看看。看网上其它的教程, 讲委托是集合interface 和 function pointer 的优点。不过速度上好象不如function pointer, 但可以象interface 一样是强类行的。  强类行就是说, 调用委托的方法时,它的参数和返回值是必须和声明委托时的方法和返回对应起来。


编程上看,delegate是非常简单的。

看看下面这几个图片,是个完整的,简单的小demo。
总共就三个文件, 分别是: delegate.vb,  Employee.vb,  Manager.vb  这是一个winform 应用程序


delegate.vb 里的代码就一行。 就是定义delegate 方法的签名, 委托有什么参数, 有没有返回值。 这里的例子代码只要一个参数,就是经理的名字。 也不需要返回值。
所以用的是sub. 如果要有返回值, 就要用function。 下面是function 的代码, delegate function CallBackManager(byval name as String) as Boolean



Employee.vb 里代码是下面代码内容:

1。 在employee内声明这个委托, 也就是说employee 有这个属性了。
2和3。   是来给employee 的这个委托属性付值。
4, 这行是employee 做完计算,然后触发打电话的事情。 invoke (触发)就是触发mdlgCallBackManager 指向的方法。 这个被指向的方法在下一段代码中。我同时又把deleagte.vb里的那行代码贴在下面了, 并用红线连接着。 这你就注意到他们的签名要一样。 也就是所谓的强类型了。

最后,就是manager form 里的代码。 下面就是。先是创建employee的实例, 然后在form load 方法里注册我要把我的哪个方法委托给employee,换句话说就是付值给employee里的mdlgCallBackManager 属性。 我把Callme 委托给employee, 那么他签名也是要一致的。




好, 如果我运行代码,然后点button1, 我就会看到下面一样的内容



这是我所理解的delegate 内容, Event和delegate 其实是一样。 过两天我要把上面的代码重写成event. 比较后会觉很相似。 delegate 还有异步的方法。 




Reference : http://abstractvb.com/code.asp?A=1084
  http://www.codeproject.com/csharp/eventdelegates.asp Event Delegates in Simple English By Daniel Ang Chee Meng

转载于:https://www.cnblogs.com/yangbin990/archive/2006/05/10/395945.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ReoGrid是一种功能强大的电子表格控件,特别适合在VB.NET中使用。它提供了丰富的功能和操作方法,可以用于创建和编辑电子表格,包括数据输入、格式化、公式计算、筛选、排序等。 ReoGrid为VB.NET提供了一系列的API和事件,可用于处理用户交互和操作电子表格。例如,我们可以使用API来创建和管理行和列,设置单元格的数据和样式,以及执行各种操作,如插入、删除、合并等。 另外,ReoGrid还支持自定义单元格类型和公式计算,这在处理特殊需求的电子表格时非常有用。我们可以自定义特定类型的单元格,例如日期、时间、货币等,以及自定义公式,用于计算一些特定的数值。 ReoGrid还支持导入和导出电子表格数据,可以与其他应用程序进行文件交换。我们可以将电子表格数据导出到Excel文件或CSV文件中,也可以从这些文件中导入数据到ReoGrid中进行处理和显示。 在VB.NET中使用ReoGrid时,我们可以通过放置ReoGrid控件在窗体上来展示电子表格,也可以以编程方式创建ReoGrid控件并进行相应的配置和绑定数据。 总之,ReoGrid是一个强大而灵活的电子表格控件,提供了丰富的功能和API,非常适合在VB.NET中使用。无论是开发业务办公应用程序还是进行数据处理和分析,ReoGrid都是一个不错的选择。 ### 回答2: ReoGrid是一种基于.NET平台的电子表格控件,可以轻松、高效地进行电子表格的创建、编辑和操作。而VB.NET是一种基于.NET平台的编程语言,与ReoGrid可以很好地兼容和配合使用。 ReoGrid的空间指的是在使用ReoGrid控件时所占用的界面空间。在使用VB.NET开发时,可以通过直接在代码中创建ReoGrid控件的实例对象,然后将该控件添加到VB.NET的窗体或者任意控件中。这样,用户可以在VB.NET的窗体中看到ReoGrid的界面,并对电子表格进行操作。 在VB.NET中使用ReoGrid控件时,可以使用ReoGrid的各种属性和方法来对电子表格进行各种操作,比如设置单元格的值、样式、合并单元格、排序、筛选等。同时,ReoGrid还提供了丰富的事件(Event)和委托(Delegate),方便开发者在特定的操作或状态发生时进行相应的处理和响应。 除了基本的操作以外,ReoGrid还提供了API接口,可以通过VB.NET调用ReoGrid的API来实现更高级的功能,比如自定义单元格编辑器、公式计算、批量操作、导入导出等。 总之,ReoGrid空间与VB.NET搭配使用可以为开发者提供强大的电子表格功能,并能够灵活满足各种需求。无论是简单的数据展示还是复杂的数据处理,ReoGrid都可以成为VB.NET开发中的重要工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值