powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / UserControl и события
9 сообщений из 9, страница 1 из 1
UserControl и события
    #35714277
iik07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Третий день мучаюсь с исчезновением события в созданном контроле.
Но, по порядку.
Иллюстрирующий пример:
В проекте контрола находятся: сам контрол, модуль класса и форма.
Контрол содержит экземпляр класса и подписан на его события. Контрол при некотором своем событии вызывает форму и передает ей экземпляр класса. В форме вызывается метод переданного класса, возбуждающий событие. Это событие прекрасно отлавливает контрол и вызывает свое событие. Вот тут возникает проблема - событие контрола, вызванное подобным образом, не доходит до формы, на которой он лежит. Причем это имеет место только при компиляции ocx, при тестировании все события происходят.

Да, на контроле и форме всего лишь по кнопке.

Класс (clsTest)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Event TestEvent()


Public Sub RaiseTestEvent()
  RaiseEvent TestEvent
End Sub

Контрол
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Event test1()

Private WithEvents Test As clsTest

Private Sub Command1_Click()
  Dim frm As New dlgTest
  frm.Init Test
  frm.Show vbModal
End Sub

Private Sub test_TestEvent()
  RaiseEvent test1
End Sub

Private Sub UserControl_Initialize()
Set Test = New clsTest
End Sub

Форма (dlgTest)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private WithEvents Test As clsTest

Public Sub Init(pTest As clsTest)
  Set Test = pTest
End Sub

Private Sub Command1_Click()
  Test.RaiseTestEvent
End Sub
...
Рейтинг: 0 / 0
UserControl и события
    #35714403
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все прекрасно доходит.
...
Рейтинг: 0 / 0
UserControl и события
    #35714553
iik07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,

Не работает в случае если тип проекта - User Control, и сам это UserControl откомпилен в .ocx.
Но все равно спасибо, размещу-ка я действительно контрол в основном проекте, без всяких дополнительных ocx...
...
Рейтинг: 0 / 0
UserControl и события
    #35714609
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iik07Antonariy,

Не работает в случае если тип проекта - User Control, и сам это UserControl откомпилен в .ocx.
Но все равно спасибо, размещу-ка я действительно контрол в основном проекте, без всяких дополнительных ocx...

чтобы работал и в ocx, вам необходимо сделать класс clsTest Public Createable
...
Рейтинг: 0 / 0
UserControl и события
    #35714725
iik07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,

а что такое Public Creatable? Multi use?
...
Рейтинг: 0 / 0
UserControl и события
    #35714746
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да
...
Рейтинг: 0 / 0
UserControl и события
    #35714820
iik07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,

Спасибо. В тестовом примере заработало, в реальной жизни вызвало ошибку 373 - This interaction between compiled and design environment components is not supported.
...
Рейтинг: 0 / 0
UserControl и события
    #35714842
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CAUSE
Forms and controls are private objects to the Visual Basic project that created them. Therefore, they should not be passed as parameters to procedures outside the project. Although you can work around this error message by adding the UserControl project and the test client project to the same project group, passing forms and controls outside the project that originally created them may have unpredictable side effects and is strongly discouraged.



RESOLUTION
There are two possible resolutions to avoid this behavior:


Do not pass forms or controls outside a project.


Add the UserControl and the client projects to the same project group.
...
Рейтинг: 0 / 0
UserControl и события
    #35714959
iik07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,

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


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