HtmlEventProperties 类
传递给每个 HtmlElement.AddEventListener 回调的动态事件负载包。概念上是 JavaScript Event 对象的 IDE 端等价物——.key、.target.id、.target.value、.index 等字段通过包的 [COMExtensible(True)] 解析动态访问。
Private Sub MyButtonClicked(ByVal eventInfo As HtmlEventProperties)
Host.DebugConsole.PrintText "clicked: " & eventInfo.target.id
End Sub
Private Sub MyKeyUp(ByVal eventInfo As HtmlEventProperties)
If eventInfo.key = "Enter" Then ProcessEntered(eventInfo.target.value)
End SubWARNING
此接口是 [COMExtensible(True)]。字段名在运行时根据底层事件对象解析。标准 DOM 事件属性(.target → 触发事件的元素;键盘事件的 .key、.code、.altKey、.ctrlKey、.shiftKey;鼠标事件的 .clientX、.clientY;IDE 列表视图事件的 .index 等)原样转发自 JavaScript 端事件对象。标准字段请参阅 MDN 的 DOM Event 文档。
来自 raiseEvent() 的自定义数据扇出
当工具窗口内的行内 HTML 调用 IDE 端的 raiseEvent(eventName, event, stopPropagation, ...customData) 辅助函数时,尾部的 customData 值作为 eventInfo.customData0、eventInfo.customData1 等流向插件的监听器,从零开始数字索引。这是列表视图/虚拟列表视图用于将逐行上下文(文件路径、行号等)附加到其项事件的机制。
' 行内 HTML — 示例 15:
' <div class="match" onclick="raiseEvent('onClickMatch', event, true, 'C:/file.twin', 42, 8)">…</div>
Private Sub OnClickMatch(ByVal eventInfo As HtmlEventProperties)
Dim filePath As String = eventInfo.customData0
Dim lineNum As Long = eventInfo.customData1
Dim colNum As Long = eventInfo.customData2
Host.ActiveEditors.Open filePath, lineNum, colNum
End Sub异步事件(setAsyncResult)
某些事件——特别是虚拟列表视图的 onAsyncGetItemHTML——是异步的:IDE 要求插件为特定参数生成内容,并期望通过事件对象本身返回答案。参数以 eventInfo.asyncArgument 到达事件,监听器通过调用 eventInfo.setAsyncResult(answer) 响应:
Private Sub OnAsyncGetItemHTML(ByVal eventInfo As HtmlEventProperties)
Dim itemIndex As Long = eventInfo.asyncArgument
eventInfo.setAsyncResult("<div>Row " & itemIndex & "</div>")
End Sub这是标准 [COMExtensible(True)] 解析在起作用——setAsyncResult 没有在接口上声明,它像 .key 或 .target 一样通过动态机制分派。完整模式(包括缓存失效配套调用 listview.notifyChangedItem(idx))请参见示例 14(WaynesVirtualListViewAddIn)。
默认成员
接口的 DefaultMember 是 Item——因此 eventInfo("target") 等同于 eventInfo.Item("target")。.target.id 简写相应地脱糖。
属性
Item
按名称查找字段。返回一个 HtmlEventProperty,其中包含字段的值加上用于进一步下钻的嵌套 Properties。
语法:eventInfo( DomPropertyName ) As HtmlEventProperty
- DomPropertyName
- 必需 字段名称。String。