event.listener 类
包: event
定义侦听程序对象的类
说明
event.listener
类定义侦听程序对象。侦听程序对象通过在触发事件时执行回调函数来响应特定事件。您可以使用 event.listener
类来构造侦听程序对象。此外,您还可以使用句柄 addlistener
和 listener
方法创建侦听程序。
使用句柄 notify
方法触发事件。
event.listener
类是 handle
类。
创建对象
说明
eListener = event.listener(
为指定的源对象上的指定事件名称创建侦听程序,并标识回调函数的函数句柄。eventSource
,eventName
,callbackFcn
)
如果 eventSource
是对象句柄的数组,侦听程序将响应数组中任何对象的指定事件。
输入参数
eventSource
— 事件源
句柄对象 | 句柄对象的元胞数组
事件源,指定为句柄对象数组或对象句柄元胞数组。当源对象由于其类不同而不能构成数组时,请使用元胞数组。所有源对象都必须定义指定的事件。
eventName
— 事件名称
字符向量 | 字符串标量
事件名称,指定为事件的字面名称。
callbackFcn
— 回调函数
函数句柄
回调函数,由函数句柄指定。有关详细信息,请参阅 Listener Callback Syntax
属性
Source
— 事件源对象
句柄对象数组或句柄对象元胞数组。
事件源对象,指定为此侦听程序在触发事件时所响应的对象的句柄。
属性:
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
数据类型: handle object
| cell array
EventName
— 事件名称
字符向量 | 字符串标量
在指定的源对象上触发时侦听程序所响应的事件的名称。
属性:
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
数据类型: char
| string
Callback
— 事件回调
函数句柄
事件回调,指定为函数句柄。该函数在触发事件时执行。
属性:
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
数据类型: function_handle
Enabled
— 启用或禁用侦听程序
true (默认) | false
如果 Enabled
设置为 true
(默认值),则会在发生事件时执行回调。要对此侦听程序禁用回调执行,请将 Enabled
设置为 false
。
属性:
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
数据类型: logical
Recursive
— 递归执行回调
false (默认) | true
当值为 false
(默认值)时,侦听程序不会递归执行其回调。因此,如果回调触发它自己的事件,侦听程序不会再次响应。
如果为 true
,侦听程序回调可能会引发触发回调的相同事件。此模式会导致无限递归,直到 MATLAB® 递归限制最终抛出错误时无限递归才会终止。
属性:
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
数据类型: logical
示例
定义侦听程序
使用在数组 textReader
中的对象上触发的、名为 EOLCallback
的回调函数为 EOL
事件定义侦听程序。
listenerHandle = event.listener(textReader,"EOL",@EOLCallback);
详细信息
侦听程序回调签名
侦听程序回调函数必须至少接受两个输入参数。
function CallbackFunction(source,eventData) ... end
source
是作为事件源的对象。eventData
是event.EventData
对象或event.EventData
的子类的实例。
有关侦听程序回调的详细信息,请参阅Listener Callback Syntax、Callback Execution和Define Custom Event Data。
限制侦听程序生命周期
您可以使用 event.listener
类构造函数或者使用句柄类 addlistener
或 listener
方法创建侦听程序对象。
使用 addlistener
创建侦听程序时,事件源对象保留对侦听程序的引用。如果源被破坏,MATLAB 也会破坏该侦听程序。不需要通过存储侦听程序对象的引用来管理其生命周期。
当您使用 event.listener
或 listener
方法创建侦听程序时,侦听程序的生命周期不会与事件源耦合。由于事件源对象不保留对侦听程序的引用,您可以更好地控制侦听程序的生命周期。但是,如果侦听程序对象超出范围,侦听程序将不再存在。
有关侦听程序生命周期的详细信息,请参阅Listener Lifecycle。
删除侦听程序
如果您对侦听程序对象调用 delete(lh)
,侦听程序即不存在,这意味着事件不再导致侦听程序回调函数执行。
禁用侦听程序
可以通过设置侦听程序的 Enabled
属性值来启用或禁用侦听程序。
版本历史记录
在 R2008a 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)