Genexus Extensions SDK 如何监听知识库(KB)对象的聚焦与选择事件
Genexus SDK 监听当前激活知识库对象的实现方案
完全可以实现和「属性」工具窗口完全一致的事件监听行为,你需要使用UIDocumentsEvents类暴露的ActiveDocumentChanged事件,而非UIEvents.AfterOpenKBObject。
ActiveDocumentChanged事件会在以下场景触发,和属性窗口的更新触发逻辑完全对齐:
- 用户切换不同已打开的知识库对象标签页
- 用户重新聚焦已打开的对象编辑窗口
- 打开新的知识库对象后自动聚焦到新窗口
具体实现步骤
- 第一步:在插件的初始化逻辑中尽早绑定
ActiveDocumentChanged事件,避免错过初始状态的触发 - 第二步:在事件回调中获取当前激活的文档实例,从中提取对应的知识库对象
- 第三步:用拿到的知识库对象数据更新你的自定义工具窗口内容
参考代码示例
// 插件加载完成后绑定事件 UIDocumentsEvents.ActiveDocumentChanged += OnActiveKbObjectChanged; private void OnActiveKbObjectChanged(object sender, EventArgs e) { // 获取当前激活的文档 var activeDocument = UIDocuments.ActiveDocument; // 校验文档是否对应合法的知识库对象 if (activeDocument?.Object is KBObject currentActiveObj) { // 执行自定义逻辑,更新工具窗口展示内容 RefreshToolWindowContent(currentActiveObj); } }
补充说明:如果需要同时支持用户在知识库导航面板中直接选中未打开对象的监听场景,可以额外订阅
UIEvents.SelectionChanged事件,通过事件参数即可获取导航树中选中的知识库对象,两个事件配合即可100%覆盖属性窗口的所有更新触发场景。
内容的提问来源于stack exchange,提问作者Bruno.S
相关产品推荐
相关产品推荐

