【问题标题】:vb.net use function from other formvb.net 使用其他形式的功能
【发布时间】:2015-01-06 04:49:55
【问题描述】:

我的情况是,我有一个助手类,我在大多数表单上都重复使用了它。碰巧我的助手类也需要从该表单调用一个函数

Public Class Form1
   Dim hc As HelperClass

   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      hc = New HelperClass
   End Sub

   Private Sub someForm1Sub()
      'do something
   End Sub
End Class

Public Class Form2
   Dim hc As HelperClass

   Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      hc = New HelperClass
   End Sub

   Private Sub someForm2Sub()
      'do something
   End Sub
End Class

Public Class Form3
   Dim hc As HelperClass

   Private Sub Form3_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      hc = New HelperClass
   End Sub

   Private Sub someForm3Sub()
      'do something
   End Sub
End Class

Public Class HelperClass
   'i need to call here someForm1Sub(), someForm2Sub(), someForm3Sub()
   'but it bases on which form uses this class
End Class

我认为有很多方法可以做到这一点。我已经阅读了一些关于委托函数的内容,但我不知道如何将委托传递给其他类。我正在使用 vb.net 2010。请提供最好的方法来做到这一点

请回复谢谢。

【问题讨论】:

  • 您可以在 vb.net here 了解更多关于代表的信息。

标签: vb.net class oop


【解决方案1】:

您可以使用AddressOf 关键字将委托传递给方法。例如,

Public Sub Test()
    ' Make Foo() call the Bar() method.
    Foo(AddressOf Bar)
End Sub

Public Sub Foo(d As Action)
   ' Call the delegate.
   d()
End Sub

Public Sub Bar()
    Console.WriteLine("Bar was called.")
End Sub

但是,正如您所说,有很多方法可以做到这一点。一种可能比传递委托更好的解决方案(特别是如果表单中有一些方法可以由辅助类调用)是让Form1Form2Form3 都实现一个接口,并让HelperClass 调用接口上的方法。然后可以在其构造函数中将接口的实例提供给HelperClass

例如,

Public Interface IForm

    Sub DoStuff()

End Interface


Public Class Form2
    Implements IForm


    Dim hc As HelperClass


    Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        hc = New HelperClass(Me)
    End Sub

    Public Sub DoStuff() Implements IForm.DoStuff
        ' Do stuff here.
    End Sub

End Class


Public Class HelperClass

    Private _form As IForm


    Public Sub New(form as IForm)
        _form = form
    End Sub


    Public Sub MakeTheFormDoStuff()
        _form.DoStuff()
    End Sub

End Class

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-06
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 2018-04-28
    • 2019-02-07
    相关资源
    最近更新 更多