event.PropertyEvent 类
包: event
属性事件的数据
说明
event.PropertyEvent
类定义传递给以下预定义属性事件的侦听程序的事件数据对象:
PreGet
PostGet
PreSet
PostSet
预定义的属性事件使侦听程序能够响应对属性值所做的更改。有关详细信息,请参阅侦听对属性值的更改。
event.PropertyEvent
类是 event.EventData
的密封子类(即您无法子类化 event.PropertyEvent
)。类构造函数是私有函数。MATLAB® 创建一个 event.PropertyEvent
对象以传递给属性事件的侦听程序。
event.PropertyEvent
类是 handle
类。
属性
示例
侦听属性事件
使用 PropOne
GetObservable
和 SetObservable
属性定义 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
函数用作 PreGet
和 PostSet
事件的回调。
event.PropertyEvent
对象的 Source
属性包含 PropOne
的 meta.property
对象。访问 meta.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
属性值会引发 propEventHandler
的 PreGet
事件响应。
obj = propEventClass; obj.PropOne
***PreGet triggered*** ans = "default"
为 PropOne
属性赋值会引发 propEventHandler
的 PostSet
事件响应。
由于回调会获取属性值以在 PostSet
事件后显示新值,因此会触发 PreGet
事件。此外,由于赋值语句不以分号结束,MATLAB 将获取属性值以在命令行窗口中显示该对象,这会再次触发 PreGet
事件。
obj.PropOne = "New string"
***PostSet triggered*** ***PreGet triggered*** New string obj = ***PreGet triggered*** propEventClass with properties: PropOne: "New string"
版本历史记录
在 R2008a 中推出