Visual Basic:强制表单实现某些方法

时间:2012-03-21 10:17:42

标签: vb.net inheritance

我有一个安装在表单中的控件。我需要实现一个回调,以便控件可以使父窗体做一些事情。我的计划是使用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

我该怎么做?

1 个答案:

答案 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