VB.NET 委托 Delegate Action Func

VB.NET 委托 :Delegate、 Action、 Func


委托,是CTS(公共类型系统)规定的5种类型之一(类类型、结构类型、接口类型、枚举类型、委托类型)。它能够调用对象的方法(实例方法)和类的方法(静态方法、在VB.NET里的Shared方法)。 实现间接访问某一封装的函数方法,始终明确,委托可被视作类

Delegate

Delegate 是委托的祖宗,ActionFunc是VB.NET简化的委托。
委托实现的步骤:
1. 创建委托(相当于创建类)

    Public Delegate Function myact(str As String) As Integer //创建委托 有返回值FunctionPublic Delegate Sub myact2(str As String) //创建委托 无返回值 Sub

2. 声明委托

    Public myaction As myact
    Public myaction2 As myact2 

3. 委托实例化
将前边声明的委托与即将创建的委托方法相关联
方法①:使用函数地址提取 Addressof 来实例化委托
方法②:用New实例化委托并绑定被委托的方法

myact = AddressOf Mycall //方法①
myact =  New myact(AddressOf Mycall ) //方法②

4. 创建委托调用的方法
myact为例,初始创建委托类型时,是 Function(str As String) As Integer ,那么委托调用的方式类型也是如此。参数为String,返回值为Integer

Private Function Mycall(str As String) As String
    TextBox1.Text = str
    Return 123
End Function

5. 委托调用

num = myaction.Invoke("调用成功!")

Action

VB.NET中 Action定义:Public Delegate Function Func(Of In T)无返回值
因此Action使用步骤同Delegate,优点在于直接省略了步骤1,不需要再创建委托了,Action本身即是委托,使用时直接声明就可以:

第一步:Public Myaction As Action
第二步:委托实例化
第三步:创建委托调用方法
第四步:调用委托

Func

定义:Public Delegate Function Func(Of In T, Out TResult) As TResult,有返回值
使用方法同Action

实例

本文实例是两个窗口间的通信,MainFormChildForm,在Module中声明委托。
功能:MainForm窗口、ChildForm窗口间互相传值

myModule.vb

Module myModule
    '声明委托
    Public myaction As Func(Of String, String)

    '创建委托
    'Public Delegate Function myact(str As String) As Integer
    'Public Delegate Sub myact2(str As String)
    '声明委托
    'Public myaction As myact
    'Public myaction2 As myact2

    Public Mainf As New MainForm
    Sub Main()

        Application.EnableVisualStyles()  '启用xp视觉样式
        Application.Run(Mainf) '加不加()都是调用默认构造函数,最好加
    End Sub
End Module

mainForm.vb

Public Class MainForm
    Dim childF As New ChildForm

    Private Function Mycall(str As String) As String
        TextBox1.Text = str
        Return 123
    End Function

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        childF.Show()
        childF.RSMsg = TextBox1.Text
        myaction = AddressOf Mycall
        'myaction2 = New myact2(AddressOf Mycall)
    End Sub
End Class

childForm.vb

Public Class ChildForm
    Public Property RSMsg() As String
        Get
            Return TextBox1.Text
        End Get
        Set(ByVal Value As String)
            TextBox1.Text = Value
        End Set
    End Property

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim num As Integer
        num = myaction.Invoke(RSMsg)

    End Sub
End Class

运行结果
初始界面
打开子窗口
子窗口显示
回调父窗口

参考资料

https://blog.csdn.net/zyjq52uys/article/details/85621639
https://blog.csdn.net/dzweather/article/details/51533259
https://blog.csdn.net/m0_53168509/article/details/117883764
https://blog.csdn.net/zyjq52uys/article/details/85621639

注意点

使用Delegate时,创建委托和声明委托应当在同一个文件Module中,这样子ChildForm中才可以调用。即步骤1、2在一起。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值