VB.net delegate 委托相关学习体会


前言

委托这个概念穿插在vb.net的很多地方且非常抽象,但是VB.NET相关的资料还是非常少的(包括微软官方文档也只有c#版本的.我在看过很多大佬的解释和教学后从完全不明白到略知一二,现在把自己的体会记录一下


一、委托是什么?

Delegate 语句定义委托类的参数和返回类型。任何具有匹配参数和返回类型的过程都可用于创建此委托类的实例。然后就可以调用委托的Invoke 方法,通过委托实例调用此过程。可以在命名空间、模块、类或结构级别声明委托,但不能在过程内声明。每个委托类都定义一个被传递对象方法规范的构造函数。委托构造函数的参数必须是对方法或lambda 表达式的引用。

二、delegate(自定义委托)

1.定义委托类型

比如 我想委托一个sub 用于增加进度条.
首先我需要定义委托类型(也就是第一句)
后面是我需要委托执行的sub

 Private Delegate Sub progress(ByVal x As Integer, ByVal obj As ProgressBar)

 Sub progressUp(i As Integer, progressB As ProgressBar)
        If progressB.Value < 100 Then
            progressB.Value += i
        End If
End Sub

2.进行委托

在需要使用委托时,先把委托类型实例化
然后使用invoke或者begininvoke进行委托:

 Dim proInvokeUp As New progress(AddressOf progressUp)
 Dispatcher.Invoke(proInvokeUp, 4, ProgressBar1)

总结

下一篇会加上action和func 的委托方法

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VB.NET中,可以使用等待窗口(WaitForm)通过委托关联窗口间的函数。 等待窗口是一个特殊的窗口,用于在后台执行耗时的任务时提供用户界面的响应。当需要等待某个任务完成时,可以在等待窗口中显示一个进度条或文本提示信息,让用户知道任务正在进行中。 要通过委托关联窗口间的函数,首先需要定义一个委托Delegate),该委托可以用来引用其他窗口中的函数。在等待窗口中,通过这个委托调用其他窗口中的函数,以实现窗口间的函数调用。 在等待窗口的代码中,可以先定义一个委托变量,类型为之前定义的委托类型,然后在等待窗口的构造函数中接受该委托作为参数。在任务完成后,通过调用该委托变量来执行其他窗口中的函数。 举个例子,假设有两个窗口:主窗口(MainForm)和等待窗口(WaitForm)。在等待窗口中定义了一个委托类型(MyDelegate),并在构造函数中接受该委托作为参数。主窗口中有一个名为DoTask的函数。在主窗口中,首先创建一个等待窗口的实例,并将DoTask传递给等待窗口的构造函数。然后在等待窗口中,通过调用委托变量来执行DoTask函数。 在主窗口中的代码示例: ``` Public Class MainForm Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click Dim waitForm As New WaitForm(AddressOf DoTask) waitForm.Show() '执行其他任务 End Sub Public Sub DoTask() '执行任务的代码 End Sub End Class ``` 在等待窗口中的代码示例: ``` Public Class WaitForm Delegate Sub MyDelegate() Private taskDelegate As MyDelegate Public Sub New(task As MyDelegate) InitializeComponent() taskDelegate = task End Sub Protected Overrides Sub OnLoad(e As EventArgs) MyBase.OnLoad(e) '显示等待窗口并执行任务 taskDelegate.Invoke() '任务完成后关闭等待窗口 Me.Close() End Sub End Class ``` 通过以上的代码,当用户点击主窗口中的Start按钮时,等待窗口会打开并显示一个进度条,同时会执行DoTask函数。当任务完成后,等待窗口会自动关闭。 最后,通过等待窗口和委托的组合,我们可以实现在后台执行耗时任务的同时提供良好的用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值