Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / UserControl и события / 9 сообщений из 9, страница 1 из 1
15.12.2008, 12:24
    #35714277
iik07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UserControl и события
Третий день мучаюсь с исчезновением события в созданном контроле.
Но, по порядку.
Иллюстрирующий пример:
В проекте контрола находятся: сам контрол, модуль класса и форма.
Контрол содержит экземпляр класса и подписан на его события. Контрол при некотором своем событии вызывает форму и передает ей экземпляр класса. В форме вызывается метод переданного класса, возбуждающий событие. Это событие прекрасно отлавливает контрол и вызывает свое событие. Вот тут возникает проблема - событие контрола, вызванное подобным образом, не доходит до формы, на которой он лежит. Причем это имеет место только при компиляции 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
15.12.2008, 13:06
    #35714403
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UserControl и события
Все прекрасно доходит.
...
Рейтинг: 0 / 0
15.12.2008, 13:46
    #35714553
iik07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UserControl и события
Antonariy,

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

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

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

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

Спасибо. В тестовом примере заработало, в реальной жизни вызвало ошибку 373 - This interaction between compiled and design environment components is not supported.
...
Рейтинг: 0 / 0
15.12.2008, 15:09
    #35714842
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UserControl и события
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
15.12.2008, 15:42
    #35714959
iik07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UserControl и события
Konst_One,

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


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