Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 2
Регистрация: 14.10.2009
Сообщений: 100
1

Нужно создать класс у которого есть Event.

25.01.2011, 06:43. Просмотров 804. Ответов 6
Метки нет (Все метки)

Подскажите плз.

Никогда до этого сильно с VB не работал.
Нужно создать класс у которого есть Event.
Это событие генериться внутри класса по таймеру.

Visual Basic
1
2
3
4
'Эта функция вызывается по таймеру
Public Sub GenerateEvent()
        RaiseEvent OnTimer
End Sub
на форме пытаюсь отловить его, но оно как будто не происходит (но
в самом классе точно отрабатывает RaiseEvent).

Заранее благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2011, 06:43
Ответы с готовыми решениями:

Создать класс - человек, у которого есть имя и возраст.
Создать класс - человек, у которого есть имя и возраст. Определить функцию которая установит имя и...

Оператор new (создать класс город у которого есть название и население)
Была задачка, создать класс город у которого есть название и население. Определить функцию которая...

Создать класс - институт , у которого есть название и число студентов
Создать класс - институт , у которого есть название и число студентов . Определить функцию ,...

Создать класс "Сыр", у которого есть название, вес порции, энергетическая ценность
создать класс сыр у которого есть название, вес порции, энергетическая ценность. Определить функцию...

6
Comanche
25.01.2011, 11:37 2
Переменную класса объявил в форме с WithEvents ?
2 / 2 / 2
Регистрация: 14.10.2009
Сообщений: 100
25.01.2011, 11:56  [ТС] 3
Да
0
Comanche
25.01.2011, 15:25 4
Событие OnTimer объявил в классе как Public ?
2 / 2 / 2
Регистрация: 14.10.2009
Сообщений: 100
25.01.2011, 19:19  [ТС] 5
У класса есть событие и процедура вызывающая его.

Visual Basic
1
2
3
4
5
Public Event timer()
 
Public Static Sub RaiseTimer()
    RaiseEvent timer
End Sub
Эту процедуру должна вызывать callback функция которая должна быть расположена в другом модуле(AddressOf так работает если я не ошибаюсь)
Я делал так, но это не правильно т.к. событие произойдет в этом же модуле, а не в форме как это требуется.

Visual Basic
1
2
3
4
5
6
7
8
9
10
Option Explicit
 
Public timer As CTimer
 
Public Function fTimerCallBack(ByVal lnghwnd As Long, ByVal lngMessage As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    
    Set timer = New CTimer
    timer.RaiseTimer
    Set timer = Nothing
End Function
Подскажите есть ли какой то выход из этой ситуации?
0
Comanche
25.01.2011, 20:56 6
В форме у тебя один инстанс твоего класса (объявленный с WithEvents), а в callback-функции - создаётся ДРУГОЙ! и именно в этом другом экземпляре происходит событие - есс-с-сно форма его не отловит!

Т.е. в callback-функции нужно вызывать процедуру (метод) RaiseTimer 'от контекста' того самого таймера, который объявлен в форме, а не создавать новый.

Выход - объявлять в форме переменную класса как PUBLIC (Public WithEvents classInstance As YourClassName), и в callback-функции вызывать Form1.YourClassName.RaiseTimer.

Тогда ты обратишься именно к тому экземпляру, отлов событий которого и происходит в форме (в classInstance_timer).
Comanche
25.01.2011, 20:58 7
Пардон, ошибся:

вместо 'и в callback-функции вызывать Form1.YourClassName.RaiseTimer'

должно быть:

'и в callback-функции вызывать Form1.classInstance.RaiseTimer'.
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2011, 20:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создать класс, на входе которого Rectangle на выходе которого bool
Не получается создать класс, на входе которого Rectangle на выходе которого bool public bool...

Класс, для полей которого нужно использовать класс
Нужно помочь с этой частью, ну и проблемка - char для ФИО не переваривает пробелы. #include...

Класс: Создать класс, объектом которого будет являться двумерный массив размерностью n x m.
Нужно создать класс, объектом которого будет являться двумерный массив размерностью n x m. Массив...

Создать класс, полем которого является класс вектор
как это выглядит?

Есть прямоугольник, на расстоянии (10,61) от которого нужно очертить область
Доброго всем времени суток! Есть прямоугольник на расстоянии (10,61) от которого нужно очертить...

В C# создать объект, класс которого написан в C++
Надеюсь в правильную ветку пишу. Как можно получить из C# создать объект который написан в C++? К...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.