Visual Basic: заставить форму реализовывать определенные методы - PullRequest
1 голос
/ 21 марта 2012

У меня есть элемент управления, который установлен в форме.Мне нужно реализовать обратный вызов, чтобы элемент управления мог заставить родительскую форму что-то делать.Я планировал создать класс 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 Ответ

3 голосов
/ 21 марта 2012

Чтобы напрямую ответить на ваш вопрос : Вы можете сделать свой класс 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...