我有一个安装在表单中的控件。我需要实现一个回调,以便控件可以使父窗体做一些事情。我的计划是使用MustInherit方法创建一个MustOverride类,并使表单继承MustInherit类。但是,Visual Basic告诉我表单不能继承多个类,这意味着它可以继承我的MustInherit类,也可以继承System.Windows.Forms.Form,但不能同时继承。
我希望能够在我的控制中执行以下操作:
private Parent as iRiksProjectParent
public sub AttachParent(ByRef parent as iRiksProjectParent)
Parent = parent
End Sub
...
private sub ProcessData()
dim theProcessedData as String
...
parent.DoSomethingWithTheData(theProcessedData)
End Sub
我该怎么做?
答案 0 :(得分:3)
直接回答您的问题:您可以让MustInherit
类继承自System.Windows.Forms.Form
。然后,如果您的表单继承自您的自定义类,它也会自动继承自System.Windows.Forms.Form
。
解决您的问题:不要使用显式回调。只需让您的自定义控件引发一个事件:
Public Event DoSomethingWithTheData(processedData As String)
Private Sub ProcessData()
Dim theProcessedData as String
...
RaiseEvent DoSomethingWithTheData(theProcessedData)
End Sub
这样,表格可以简单地处理事件:
Private Sub myCustomControl_DoSomethingWithTheData(processedData As String) _
Handles myCustomControl.DoSomethingWithTheData
...
End Sub