Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

listener

类: handle

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

语法

eL = listener(hSource,EventName,callback)
eL = listener(hSource,PropertyName,EventName,callback)

说明

eL = listener(hSource,EventName,callback) 为名为 EventName 的事件创建侦听程序。hSource 是作为事件源的句柄对象。callback 是触发该事件时 MATLAB® 调用的函数句柄。

如果 hSource 是由事件源对象组成的数组,侦听程序将响应该数组中未处于删除状态的任何对象上的指定事件。

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

事件名称事件发生
PreSet

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

PostSet

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

PreGet

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

PostGet

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

输入参数

全部展开

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

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

数据类型: char | string

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

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

  • 字符串或字符串数组,其中每个字符串都是为 hSource 中的对象定义的属性的名称

  • 标量 meta.property 对象或由 meta.property 对象组成的数组,这些对象对应于为 hSource 中的对象定义的属性

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

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

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

数据类型: function_handle

输出参数

全部展开

侦听程序对象,以 event.listenerevent.proplistener 对象的句柄形式返回。

示例

全部展开

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

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

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

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

删除侦听程序对象。

delete(propListener)

提示

侦听程序的生命周期

要删除侦听程序,请删除 listener 返回的侦听程序对象。例如,下面的语句通过调用 handle 类的 delete 方法来删除侦听程序。

delete(el)

对侦听程序对象调用 delete 将销毁侦听程序,因此该事件不会再导致回调函数执行。

listener 方法不会将侦听程序的生命周期与作为事件源的对象绑定在一起。销毁事件源对象不会影响侦听程序对象的生命周期。

您必须独立于源对象显式销毁使用 listener 方法创建的侦听程序。对侦听程序变量调用 handle delete 方法(例如,delete(el))将显式销毁侦听程序。如果侦听程序没有其他引用,则重新定义或清除包含该侦听程序的变量可以删除该侦听程序。要将侦听程序的生命周期与事件源对象的生命周期绑定在一起,请使用 addlistener

备选方法

当您希望 MATLAB 管理侦听程序生命周期时,请使用 addlistener

版本历史记录

在 R2017b 中推出