Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / vb 6 события пользовательского класса / 4 сообщений из 4, страница 1 из 1
28.07.2017, 16:57
    #39496838
a115
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb 6 события пользовательского класса
Добрый день

в поректе 3 модуля:
m_Main (code module)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Instance1 As Class1

Public Sub Main()
   Dim Instance2 As Class2
   
   Set Instance1 = New Class1
   Set Instance2 = New Class2
   
   Instance1.Text = "kk"
End Sub



Class1 (class module)
Код: vbnet
1.
2.
3.
4.
5.
Public Event OnChange(ByVal Text As String)

Public Property Let Text(ByVal Value As String)
   RaiseEvent OnChange(Value)
End Property



Class2 (class module)
Код: vbnet
1.
2.
3.
4.
5.
Private WithEvents Instance1 As Class1

Private Sub Instance1_OnChange(ByVal Text As String)
   Call MsgBox(Text)
End Sub



Cуть попытки: при установке свойства Text класса Class1 вызвать событие OnChange в классе Class2.
Но что-то я делаю не так. В чем ошибка?
...
Рейтинг: 0 / 0
28.07.2017, 17:19
    #39496852
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb 6 события пользовательского класса
a115
Код: vbnet
1.
Public Instance1 As Class1

a115
Код: vbnet
1.
Private WithEvents Instance1 As Class1

это две разных независимых переменных. Вторая при этом ничем не инициализировала, то есть Nothing
...
Рейтинг: 0 / 0
28.07.2017, 17:21
    #39496855
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb 6 события пользовательского класса
Можно попробовать так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Public Sub Main()
   Dim Instance2 As Class2
   
   Set Instance2 = New Class2
   Set Instance2.Instance1 = New Class1
   
   Instance2.Instance1.Text = "kk"
End Sub


только переменную Instance1 во втором классе надо сделать публичной
...
Рейтинг: 0 / 0
28.07.2017, 17:26
    #39496857
a115
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb 6 события пользовательского класса
О, спасибо огромное!

Изменил код в модуле Class2:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private WithEvents m_Instance1 As Class1

Private Sub Class_Initialize()
   Set m_Instance1 = Instance1
End Sub

Private Sub m_Instance1_OnChange(ByVal Text As String)
   Call MsgBox(Text)
End Sub


и все заработало. Спасибо
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / vb 6 события пользовательского класса / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]