2012-03-21 15 views
1

私はフォーム内にマウントされたコントロールを持っています。コントロールが親フォームに何かをさせるように、コールバックを実装する必要があります。私の計画は、MustOverrideメソッドでMustInheritクラスを作成し、フォームがMustInheritクラスを継承するようにすることでした。しかし、Visual Basicでは、フォームが複数のクラスを継承できないことを示しています。つまり、MustInheritクラスまたはSystem.Windows.Forms.Formのいずれかを継承できますが、両方を継承することはできません。Visual Basic:特定のメソッドを実装するフォームを強制的に

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 

がどのように私はこれを行うことができます。

私は私のコントロールで、次のような何かを行うことができるようにしたいのですが?

答えて

3

は直接あなたの質問に答えるために:あなたはSystem.Windows.Forms.FormからあなたMustInheritクラスの継承を行うことができます。フォームがカスタムクラスから継承される場合、自動的に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 
+1

イベントは間違いなく行く方法です。また、コントロールに特定のイベントがあることを要求する必要がある場合は、インターフェイスを実装することができます。これは通常、複数の継承が必要と思うときに必要です。 –

+0

素晴らしい、ただの仕事! – RikSaunderson

関連する問題