Обзор событий и прослушиватели

Почему События использования и прослушиватели

События являются уведомлениями, который возражает широковещательной передаче в ответ на что-то, что происходит, такие как изменение значения свойства или взаимодействие с пользователем с прикладной программой. Прослушиватели выполняют функции, когда уведомлено, что мероприятие происходит. Используйте события, чтобы передать изменения в объектах. Прослушиватели отвечают путем выполнения функции обратного вызова.

Для получения дополнительной информации смотрите Событие и Концепции прослушивателя.

События и основы прослушивателей

При использовании событий и прослушивателей:

  • Только handle классы могут задать события и прослушиватели.

  • Событие Define называет в events блок определения класса (События и Синтаксис Прослушивателей).

  • Используйте атрибуты события, чтобы задать доступ к событию (Атрибуты События).

  • Вызовите указатель notify метод, чтобы инициировать событие. Уведомление о событии широковещательно передает именованное событие ко всем прослушивателям, указанным для этого события.

  • Используйте указатель addlistener метод, чтобы связать прослушиватель объекта источника события. MATLAB® уничтожает прослушиватель, когда источник события уничтожается.

  • Используйте указатель listener метод, чтобы создать прослушиватели, которые не связываются с жизненным циклом объекта источника события. Этот подход полезен, когда источник события и прослушиватели заданы в различных компонентах, которые вы хотите смочь добавить, удалить, или изменить независимо. Ваш код приложения управляет жизненным циклом объекта прослушивателя.

  • Функции обратного вызова прослушивателя должны задать по крайней мере два входных параметра — указатель на объект источника события и данные о событиях (См. Синтаксис Коллбэка Прослушивателя для получения дополнительной информации).

  • Измените данные, переданные каждому коллбэку прослушивателя путем разделения на подклассы event.EventData класс.

Предопределенные События

События MATLAB Defines для слушания наборов свойств и запросов. Для получения дополнительной информации смотрите, Прислушиваются к Изменениям в Значениях свойств.

Все объекты указателя задают событие под названием ObjectBeingDestroyed. MATLAB инициировал это событие прежде, чем вызвать деструктор класса.

Синтаксис события

Задайте имя события в events блок кода:

classdef ClassName < handle
   ...
   events
      EventName
   end
   ...
end

Например, MyClass задает событие под названием StateChange:

classdef MyClass < handle
   events
      StateChange
   end
end

Инициируйте событие с помощью handle класс notify метод:

classdef ClassName < handle
   ...
   events
      EventName
   end
   ...
   methods
      function anyMethod(obj)
         ...
         notify(obj,'EventName');
      end
   end
end

Любая функция или метод могут инициировать событие для определенного экземпляра класса, задающего событие. Например, triggerEvent вызовы метода notify инициировать StateChange событие:

classdef MyClass < handle
   events
      StateChange
   end
   methods
      function triggerEvent(obj)
         notify(obj,'StateChange')
      end
   end
end

Инициируйте StateChange событие с triggerEvent метод:

obj = MyClass;
obj.triggerEvent

Для получения дополнительной информации смотрите Синтаксис Событий и Прослушивателей.

Создание прослушивателя

Задайте прослушиватель с помощью handle класс addlistenerили listener метод. Передайте указатель на функцию для функции обратного вызова прослушивателя с помощью одного из этих синтаксисов:

  • addlistener (SourceOfEvent, 'EventNameFunctionName ) — для обычной функции.

  • addlistener (SourceOfEvent, 'EventName', @Obj.methodName) — для метода Obj.

  • addlistener (SourceOfEvent, 'EventName', @ClassName.methodName) — для статического метода класса ClassName.

ListenerObject = addlistener(SourceOfEvent,'EventName',@listenerCallback);

addlistener возвращает объект прослушивателя. Входные параметры:

  • SourceOfEvent — Объект класса, который задает событие. Событие инициировано на этом объекте.

  • EventName — Имя события задало в классе events блок кода.

  • @listenerCallback — указатель на функцию, ссылающийся на функцию, которая выполняется в ответ на событие.

Например, создайте объект прослушивателя для StateChange событие:

function lh = createListener(src)
   lh = addlistener(src,'StateChange',@handleStateChange)
end

Задайте функцию обратного вызова для прослушивателя. Функция обратного вызова должна принять как первые два аргумента объект источника события и объект данных о событиях: Используйте аргумент источника события, чтобы получить доступ к объекту, который инициировал событие. Найдите информацию о событии с помощью объекта данных о событиях.

function handleStateChange(src,eventData)
   % src - handle to object that triggered the event
   % eventData - event.EventData object containing 
   %             information about the event.   
   ...
end

Для получения дополнительной информации смотрите Синтаксис Коллбэка Прослушивателя.

Смотрите также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте