Visio的DrawingControl暴露出来很多事件,一般来说是够用了。可是有时候,我们还觉得这些事件不够用,比如说: 我们想在拖动某个形状时触发事件来处理,可是直接从drawingcontrol里面是没有这样的事件的,查了查也没有这样的事件。 于是,我可以这样做。 Visio.Shape shape = this.axDrawingControl1.Window.Application.ActivePage.Shapes[1]; shape.TextChanged +=new Microsoft.Office.Interop.Visio.EShape_TextChangedEventHandler(shape_TextChanged); shape.CellChanged +=new Microsoft.Office.Interop.Visio.EShape_CellChangedEventHandler(shape_CellChanged);
当然真正应用的时候,这个shape不能像我上面那样取,这里注册了两个事件,一个是该Shape的文本发生改变的事件,一个是Cell改变的事件,在事件处理中 private void shape_CellChanged(Microsoft.Office.Interop.Visio.Cell Cell) { if(Cell.Name == "PinX" || Cell.Name == "PinY") MessageBox.Show("LocationChanged"); } 这样,该Shape位置发生变化我们就可控了。
posted on 2004-10-18 15:31 什么都不知道 阅读(805) 评论(13) 编辑 收藏
# re: 使用Visio 2003 Drawing Control开发应用(补1) 2005-01-05 14:31 zhaoxpi
请教一个问题。急,谢谢! 我用c#+visio2003开发了一个机房管理软件,但是在客户机安装完成后(程序用到的visio drawing control控件已经打包进去了),需要visio的部分运行不了,发现只有在机器上安装了一整套visio软件后才可以运行我自己的软件。请问为什么?难道客户机上必须安装整套visio吗?
# re: 使用Visio 2003 Drawing Control开发应用(补1) 2005-01-05 19:26 什么都不知道
是的,必须安装 我在该系列中的第一篇(?)中说过这个问题。必须安装visio2003才可以,而且必须安装.net可编程支持组件(typical安装不装) 这个安装可以用脚本写出silent installation的,所以你可以放在一个安装包内,具体你可以看我从前的文章
# 好,谢谢 2005-01-06 09:37 zhaoxpi
# re: 使用Visio 2003 Drawing Control开发应用(补1) 2005-01-06 11:47 afirst
小弟正在研究c#开发visio2003的问题,可否给一些思路呢?
# re: 使用Visio 2003 Drawing Control开发应用(补1) 2005-01-06 11:48 afirst
或者相关的文档,我在网上查找,实在太少了。 去电脑书店,很少有卖的。如果可以我告诉你信箱,谢谢了
# re: 使用Visio 2003 Drawing Control开发应用(补1) 2005-01-06 18:42 什么都不知道
visio 2003能实现的(比如绘图) + visio 2003不能实现的(比如和你的业务数据库打交道),而且你不想个性化visio 2003,是想单独开发个程序,就是用这个drawing control的目的 相关的文档包括msdn都很少,我这个系列应该算是最全的了,只是我没有多少时间把他写的很详细
# re: 使用Visio 2003 Drawing Control开发应用(补1) 2005-01-06 23:34 zhaoxpi
继续请教!谢谢! 我不想让用户使用visio自己提供的右键菜单,所以我自己创建了contextmenu,但是现在的问题是没办法扑捉到点击右键时的鼠标位置,因为drawing control内部的鼠标坐标没办法转换到winform的坐标。 请问有什么办法解决吗?
# re: 使用Visio 2003 Drawing Control开发应用(补1) 2005-01-07 18:16 什么都不知道
re: 使用Visio 2003 Drawing Control开发应用(补1)
浙公网安备 33010602011771号
评论