Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

addlistener

类: handle

创建绑定到事件源的事件侦听程序

语法

el = addlistener(hSource,EventName,callback)
el = addlistener(hSource,PropertyName,EventName,callback)

说明

el = addlistener(hSource,EventName,callback) 为源对象 hSource 上触发的事件 EventName 创建侦听程序。

如果 hSource 是数组,侦听程序将响应 hSource 数组中任何对象上的指定事件。callback 是引用回调函数的函数句柄。

el = addlistener(hSource,PropertyName,EventName,callback) 为某个预定义的属性事件创建侦听程序。有四个预定义的属性事件:

事件名称事件发生
PreSet

在设置属性值之前、调用它的 set 访问方法之前立即触发

PostSet

在属性值设置之后立即触发

PreGet

在提供属性值查询服务之前、调用它的访问方法之前立即触发

PostGet

在将属性值返回到查询后立即触发

输入参数

全部展开

事件源是作为事件来源的对象,或源对象数组,指定为句柄数组。

源对象上触发的事件的名称,指定为区分大小写的引用文本。对于属性事件,事件名称为四个预定义的属性事件之一。

数据类型: char | string

其属性事件触发您的侦听程序的属性名称,指定为以下值之一:

  • 字符向量或字符向量元胞数组,其中每个字符向量是您为 hSource 中的对象定义的属性名称

  • 标量 meta.property 对象

  • meta.property 对象组成的数组

仅当 hSource 为标量时,才能将侦听程序与动态属性的属性事件关联。如果 hSource 不是标量,则这些属性必须属于 hSource 的类,且不能包含动态属性(不属于类定义)。

定义源属性的类必须设置 GetObservableSetObservable 属性特性以让您能够侦听属性事件。

侦听程序回调,指定为函数句柄

数据类型: function_handle

输出参数

全部展开

addlistener 创建的侦听程序对象,指定为 listenerevent.proplistener 对象的句柄。

示例

全部展开

为图形 figure 窗口的 Color 属性创建属性侦听程序。

fig = figure;
propListener = addlistener(fig,'Color','PostSet',@(src,evnt)disp('Color changed'));

Color 属性的值设置为 yellow。设置该属性将触发图窗的 PostSet 属性事件。事件源对象是句柄 fig 引用的特定图窗。

set(fig,'Color','yellow')

提示

  • 要删除侦听程序,请删除 addlistener 返回的侦听程序对象。例如,

    delete(el)

    调用句柄类 delete 方法以便从工作区中删除对象并删除侦听程序。

  • 重新定义或清除包含侦听程序句柄(例如 el)的变量不会删除该侦听程序。事件对象 (hSource) 仍引用 event.listener 对象。addlistener 将侦听程序的生命周期与作为事件来源的对象相关联。

  • 要定义未与事件对象相关联的侦听程序,请直接使用 event.listener 构造函数创建侦听程序。

备选方法

如果您希望侦听程序对象的生命周期独立于源对象的生命周期,请使用 listener 创建侦听程序。

在 R2008a 中推出