高星星_9527 2022-08-21 15:44 采纳率: 31.8%
浏览 88
已结题

vb.net 在dll里如何实现回调

用vb.net语言写个dll,在dll里如何执行主程序里的一个自定义函数

  • 写回答

3条回答 默认 最新

  • 急速光粒 2022-08-21 18:25
    关注

    可以在dll中提供委托函数,让主程序将其自定义函数注册到dll的委托函数中。然后在dll中调用委托函数实现对主程序的自定义函数调用。
    声明一个module用于传递声明委托

    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
    

    主程序

    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
    

    dll子程序:

    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
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月22日
  • 已采纳回答 8月22日
  • 赞助了问题酬金40元 8月21日
  • 创建了问题 8月21日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法