Main Content

event.PropertyEvent 类

命名空间: event

属性事件的数据

描述

event.PropertyEvent 类定义传递给以下预定义属性事件的侦听程序的事件数据对象:

  • PreGet

  • PostGet

  • PreSet

  • PostSet

预定义的属性事件使侦听程序能够响应对属性值所做的更改。有关详细信息,请参阅侦听对属性值的更改

event.PropertyEvent 类是 event.EventData 的密封子类(即您无法子类化 event.PropertyEvent)。类构造函数是私有函数。MATLAB® 创建一个 event.PropertyEvent 对象以传递给属性事件的侦听程序。

event.PropertyEvent 类是一个 handle 类。

类属性

Sealed
true
ConstructOnLoad
true
HandleCompatible
true
RestrictsSubclassing
true

有关类属性的信息,请参阅类属性

属性

全部展开

其属性受影响的对象,指定为对象句柄。

属性:

GetAccess
public
SetAccess
private
GetObservable
true
SetObservable
true

数据类型: handle object

触发事件的属性,指定为属性的 matlab.metadata.Property 对象。

属性:

GetAccess
public
SetAccess
private
GetObservable
true
SetObservable
true

属性事件的名称,指定为四个事件名称之一。

属性:

GetAccess
public
SetAccess
private
GetObservable
true
SetObservable
true

数据类型: char

示例

侦听属性事件

使用 PropOne GetObservableSetObservable 属性定义 propEventClass 类,以便观察属性事件。类构造函数为这些事件添加侦听程序。

classdef propEventClass < handle
   % Class to observe property events
   properties (GetObservable,SetObservable)
      PropOne string = "default"
   end
   methods
      function obj = propEventClass
         addlistener(obj,'PropOne','PreGet',@propEventHandler);
         addlistener(obj,'PropOne','PostSet',@propEventHandler);
      end
   end
end

propEventHandler 函数用作 PreGetPostSet 事件的回调。

event.PropertyEvent 对象的 Source 属性包含 PropOnematlab.metadata.Property 对象。访问 matlab.metadata.Property Name 属性以获取触发事件的属性的名称。当回调处理多个属性时,请切换属性名称。

event.PropertyEvent 对象的 EventName 属性包含事件的名称。要从回调处理多个属性事件,请基于事件名称应用 switch 语句。

function propEventHandler(~,eventData)
   switch eventData.Source.Name % Get property name
      case 'Prop1'
         switch eventData.EventName % Get the event name
            case 'PreGet'
               fprintf('%s\n','***PreGet triggered***')
            case 'PostSet'
               fprintf('%s\n','***PostSet triggered***')
               disp(eventData.AffectedObject.(eventData.Source.Name));
         end
   end
end

引用 PropOne 属性值会引发 propEventHandlerPreGet 事件响应。

obj = propEventClass;
obj.PropOne
***PreGet triggered***

ans = 

    "default"

PropOne 属性赋值会引发 propEventHandlerPostSet 事件响应。

由于回调会获取属性值以在 PostSet 事件后显示新值,因此会触发 PreGet 事件。此外,由于赋值语句不以分号结束,MATLAB 将获取属性值以在命令行窗口中显示该对象,这会再次触发 PreGet 事件。

obj.PropOne = "New string"
***PostSet triggered***
***PreGet triggered***
New string

obj = 

***PreGet triggered***
  propEventClass with properties:

    PropOne: "New string"

版本历史记录

在 R2008a 中推出