首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visio VSTO :形状事件?

Visio VSTO :形状事件?
EN

Stack Overflow用户
提问于 2017-12-13 17:49:50
回答 1查看 780关注 0票数 0

我有一个模板,它使用vba来响应形状事件。通常,当用户双击形状时,将显示一个用户窗体,用户可以使用该窗体编辑形状数据。

我想使用C#将其转换为Visio AddIn。我对大多数通用代码都很满意,但shape事件让我感到困惑!?

Google给了我一个提示,让我下载Visio SDK并查看“持久事件”。然而,按照安装说明,我仍然没有在我的开发者标签中看到“持久事件”--也不确定它们是什么,以及它们是否是我所需要的。

总体而言,它只是觉得严重缺乏文档。有谁能告诉我怎么走吗?

(使用Visio 2016)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-14 06:07:41

您是否真的希望使用双击作为交互方法,或者只是因为双击单元格而使用此方法?

如果您这样做了,那么我将继续使用这个单元格,但只需使用QUEUEMARKEREVENT ShapeSheet函数触发一个标记事件,然后侦听Application.MarkerEvents。

如果您希望在右键单击上下文菜单项时显示表单,则使用相同的策略,但将函数放在Action单元格中。

如果您希望窗体在用户选择形状时出现,那么您需要在窗口上侦听SelectionChanged。

一个要问的问题是,你是如何开始倾听的?考虑到应用程序将打开除您的解决方案之外的其他文档,您可能希望从侦听所有DocumentOpened/Created事件开始,然后确定它是否是感兴趣的文档,如果是,则连接您的Application.MarkerEvent侦听。

另一种方法是使用持久事件。在Visio中,有一小部分事件是“持久的”。这是一个事件,可以与文件一起保存,然后在打开时自动连接。例如,(一旦您的SDK正常工作)如果您查看像组织结构图这样的模板,您将看到它包含两个持久事件:

这些事件只能调用插件(不能调用插件),在组织结构图的情况下,它是目标插件。但是,对于您的情况,您可以添加QueueMarkerEvent插件并传递您喜欢的任何参数。这很有用的原因是,它意味着您不必再监视所有文档事件,因为您知道您的文档将触发自己的事件来启动事件。所以你只需要听一听Application.MarkerEvents,确保你的一个参数包含一个唯一的标识符,然后你就可以随心所欲地响应了。

我可以推荐course links in this related post吗?它包含(从ShapeSheet中的操作)触发标记事件的示例代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47789958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档