内容摘要:Visio二次开发中,为Visio Drawing Control添加自定义菜单有两种方式:一种是使用捕捉Visio的MouseUpEvent事件,弹出ContextMenu即可;另一种是通过在PageSheet中增加Action来实现,也就是使用RUNADDONWARGS函数来实现。
Visio Drawing Control中集成自定义菜单是很多项目必须的,很多朋友也问过我如何实现这些菜单,下面介绍下Visio自定义菜单的实现。
Visio二次开发中,为Visio Drawing Control添加自定义菜单有两种方式:一种是使用捕捉Visio的MouseUpEvent事件,弹出ContextMenu即可;另一种是通过在PageSheet中增加Action来实现,也就是使用RUNADDONWARGS函数来实现。
两种实现的效果如下图所示,两者的区别是,使用第二种会保留Visio控件的一些如复制、粘贴的原有菜单


先介绍第一种方法,首先注册MouseUpEvent的事件,如下代码所示:
drawingControl.MouseUpEvent+=newAxMicrosoft.Office.Interop.VisOcx.EVisOcx_MouseUpEventHandler(this.onDrawingControlMouseUp);
然后,你需要实现
onDrawingControlMouseUp函数的内容,在里面你需要限制下右键的一些事件,然后通过X,Y坐标获取选定的Shape对象,弹出你的ContextMenu对象即可,如下代码所示。
private void onDrawingControlMouseUp(object sender,AxMicrosoft.Office.Interop.VisOcx.EVisOcx_MouseUpEvent eventData)
{
if ((eventData.button == (int)VisKeyButtonFlags.visMouseRight) &&
((eventData.keyButtonState & (int)VisKeyButtonFlags.visKeyControl) ==0 )) {
clickedShape = Utility.GetClickedShape(drawingControl, eventData.x, eventData.y);
if (clickedShape != null) {
eventData.cancelDefault = true;
shapeShortcutMenu.Show(this,Utility.MapVisioToWindows(drawingControl, eventData.x, eventData.y));
}
}
来源:http://www.iqidi.com 作者:伍华聪 责编:豆豆技术应用