Как вызвать событие из модуля vb6? - PullRequest
3 голосов
/ 23 мая 2011

Я разработал пользовательский элемент управления Visual Basic 6 и объявил несколько пользовательских событий. Возможно ли в vb6 вызывать эти события из модуля или мне нужно реализовать специальные «прокси» методы в моем контроле, чтобы сделать это?

Ответы [ 2 ]

7 голосов
/ 23 мая 2011

RaiseEvent:

Ошибка компиляции:
Действительно только в объектном модуле.

(Что имеет смысл.)

Да, вам нужен Friend метод в вашем классе, который вы бы вызвали для вызова событий из вашего модуля:

Класс:

Public Event Click()

Friend Sub OnClick()
  RaiseEvent Click
End Sub

Модуль:

someVar.OnClick
3 голосов
/ 24 мая 2011

Возможно, не совсем тот ответ, который вы ищете, но можно использовать процедуры, подобные событиям, из простых модулей:

Сначала определите интерфейс обратного вызова: IEventsClient (модуль класса):

Option Explicit

Public Sub PropertyChanged(sender As Object, property As String)
End Sub

MyModule:

Option Explicit

Public EventClients As Collection

Public Sub OnPropertyChanged(property As String)
    Dim eventsClient As IEventsClient
    Dim element As Variant

    For Each element In EventClients
        Set eventsClient = element
        eventsClient.PropertyChanged MyControl, property
    Next

End Sub

Public Sub RaiseSomePropertyChanged()
    OnPropertyChanged "SomeProperty"
End Sub

Основная форма:

Option Explicit
Implements IEventsClient

Private Sub Form_Load()
    'Entry point of the application'
    Set MyModule.EventClients = New Collection
    MyModule.EventClients.Add Me
End Sub

Private Sub IEventsClient_PropertyChanged(sender As Object, property As String)
    If TypeOf sender Is MyControl Then
        Select Case property
            Case "SomeProperty"
            '   DoSomething'
        End Select
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...