终于找到了很重要的库VisioUtility—-找了好久—在VisioLibrary.cs
以下是链接
链接:https://pan.baidu.com/s/1QGOLjn4yBGHCkjZoNDhoeA
参考链接:
https://blog.csdn.net/xuexue_wang/article/details/10943629?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-3
伍华聪
https://www.cnblogs.com/wuhuacong/archive/2008/05/30/1210525.html
利用VisioUtility可以得到AxDrawingControl中鼠标点击时间下点击的形状Shape
private void axDrawingControl1_MouseDownEvent(object sender, AxMicrosoft.Office.Interop.VisOcx.EVisOcx_MouseDownEvent e){try{if (IsVisioEditable){if (cbMasters.EditValue != null){string s = string.Format("x:{0},y:{1}", e.x, e.y);string shapename = cbMasters.EditValue.ToString().Trim();if (!string.IsNullOrEmpty(shapename)){Visio.Shape shape = axDrawingControl1.Document.Pages[1].Drop(currentStencil.Masters[shapename], e.x, e.y);}}}Shape shp = VisioUtility.GetClickedShape(axDrawingControl1, e.x,e.y);//XtraMessageBox.Show(VisioUtility.MapVisioToWindows(axDrawingControl1, e.x, e.y));if (shp != null){var point = Topo.Points.Find(a => a.VisioIndex == shp.Index);//string message = string.Format("点编号{0},类型{1}", point.ID, point.pointType.ToString());string message = shp.NameU;InfoEdits.Point p = new InfoEdits.Point();string ms = "";InfoEdits.Track t = new InfoEdits.Track();if (message.Contains("Signal")){p = Topo.Signals.Find(a => a.VisioIndex == shp.Index);t = Topo.Tracks.Find(a => a.ID == p.TrackID);ms = string.Format("SignalName ={0} DeltaPos ={1}m", p.Tag, p.DeltaPos);ms += "\r\n" + string.Format("X ={0},Y ={1}", p.X, p.Y);ms += "\r\n" + string.Format("Lng ={0}, Lat={1}", p.Lon, p.Lat);ms += "\r\n" + string.Format("TrackName ={0}, TrackType ={1}", t.Name, t.Type.ToString());}else if (message.Contains("Balise")){p = Topo.Balises2.Find(a => a.VisioIndex == shp.Index);t = Topo.Tracks.Find(a => a.ID == p.TrackID);ms = string.Format("BaliseName ={0} DeltaPos ={1}m", p.Tag, p.DeltaPos);ms += "\r\n" + string.Format("X ={0}, Y ={1}", p.X, p.Y);ms += "\r\n" + string.Format("Lng ={0}, Lat={1}", p.Lon, p.Lat);ms += "\r\n" + string.Format("TrackName ={0}, TrackType ={1}", t.Name,t.Type.ToString());}else if (message.Contains("Joint")){p = Topo.Points.Find(a => a.VisioIndex == shp.Index);t = Topo.Tracks.Find(a => a.ID == p.TrackID);ms = string.Format("ID ={0} DeltaPos ={1}m DeltaBear ={2}", p.ID, p.DeltaPos, p.DeltaBear);ms += "\r\n" + string.Format("X ={0}, Y ={1}", p.X, p.Y);ms += "\r\n" + string.Format("Lng ={0}, Lat={1}", p.Lon, p.Lat);ms += "\r\n" + string.Format("TrackName ={0}, TrackType ={1}", t.Name, t.Type.ToString());}if (!string.IsNullOrEmpty(ms)){toolTipController1.ShowHint(ms, DevExpress.Utils.ToolTipLocation.RightCenter);}}else{}}catch(Exception ex){WriteLog(ex.Message);}}
private void repositoryItemComboBox3_SelectedIndexChanged(object sender, EventArgs e){DoVisioCmds(barEditItem3.EditValue.ToString());}/// <summary>/// 执行Visio的命令/// </summary>/// <param name="s"></param>private void DoVisioCmds(string s){switch (s){case "形状窗口":visApp.DoCmd((short)VisUICmds.visCmdShapesWindow);break;case "属性数据窗口":visApp.DoCmd((short)VisUICmds.visCmdCustProp);break;case "平移和缩放":visApp.DoCmd((short)VisUICmds.visCmdPanZoom);break;case "显示隐藏标尺":visApp.DoCmd((short)VisUICmds.visCmdViewRulers);break;case "显示隐藏网格":visApp.DoCmd((short)VisUICmds.visCmdViewGrid);break;case "大小和位置":visApp.DoCmd((short)VisUICmds.visCmdSizePos);break;default:break;}}
