Пример #1
0
        /// <summary>
        /// Метод выделения вершин
        /// </summary>
        /// <param name="key"></param>
        /// <param name="window"></param>
        public void Select(int key, Visio.Window window)
        {
            if (window != null)
            {
                window.DeselectAll();
                switch (key)
                {
                // Выделить все вершины
                case 1:
                    foreach (var node in vertices)
                    {
                        window.Select(node.Value, 2);
                    }
                    break;

                // Выделить все соединенные вершины
                case 2:
                    foreach (var node in vertices)
                    {
                        if (node.Value.ConnectedShapes(Visio.VisConnectedShapesFlags.visConnectedShapesAllNodes, "").Length != 0)
                        {
                            window.Select(node.Value, 2);
                        }
                    }
                    break;

                // Выделить все несоединенные вершины
                case 3:
                    foreach (var node in vertices)
                    {
                        if (node.Value.ConnectedShapes(Visio.VisConnectedShapesFlags.visConnectedShapesAllNodes, "").Length == 0)
                        {
                            window.Select(node.Value, 2);
                        }
                    }
                    break;

                // Выделить все ребра
                case 4:
                    foreach (var edge in edges)
                    {
                        window.Select(edge.Value, 2);
                    }
                    break;

                default:
                    throw new ArgumentException("Ключ не соответствует допустимому диапозону");
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 导出visio的Page中的所有形状到word中
        /// </summary>
        /// <param name="Page">要进行粘贴的Visio中的页面</param>
        /// <param name="range">此时word文档中的全局range的位置或者范围</param>
        /// <remarks>在此方法中,会将visio指定页面中的所有形状进行选择,然后进行组合,最后将其输出到word中;
        /// 由局部安全的原则,在进行绘图前,将另起一行,并将段落样式设置为“图片”样式</remarks>
        private void Export_VisioPlanview(Page Page, ref Word.Range range)
        {
            Microsoft.Office.Interop.Visio.Application app = Page.Application;
            //
            Window wnd = default(Window);

            wnd      = app.ActiveWindow;
            wnd.Page = Page;


            wnd.Activate();
            //这里要将ShowChanges设置为True,否则下面的SelectAll()方法会被禁止。
            app.ShowChanges = true;
            wnd.SelectAll();
            //  ---------------------- 耗时代码1:复制Visio的Page中的所有形状
            //而且在这一步的时候Visio的窗口中可能会弹出子窗口
            wnd.Selection.Copy();
            //这一步也可能会导致Visio的窗口中弹出子窗口
            wnd.DeselectAll();

            //关闭所有的子窗口
            //Debug.Print(app.ActiveWindow.Windows.Count)     ‘即使只显示出一个子窗口,这里也会返回10
            //For Each subWnd As Visio.Window In app.ActiveWindow.Windows
            //    subWnd.Visible = False
            //Next

            //根据实际情况:每次都只弹出“外部数据”这一子窗口,所以在这里就只对其进行单独隐藏。
            wnd.Windows.ItemFromID((Int32)Visio.VisWinTypes.visWinIDExternalData).Visible = false;

            //让窗口的显示适应页面
            wnd.ViewFit = (Int32)Visio.VisWindowFit.visFitPage;
            Word.Range with_2 = range;
            //新起一行,并设置新段落的段落样式为图片
            NewLine(range, ParagraphStyle.picture);

            //  ---------------------- 耗时代码2:将Visio的Page中的所有形状粘贴到Word中(不可以用:DataType:=23)
            with_2.PasteSpecial(DataType:  Word.WdPasteDataType.wdPasteOLEObject, Placement: Word.WdOLEPlacement.wdInLine);


            Word.InlineShape shp = default(Word.InlineShape);
            range.Select();
            range.Application.Selection.MoveLeft(Unit: Word.WdUnits.wdCharacter, Count: 1,
                                                 Extend: Word.WdMovementType.wdExtend);
            shp = range.Application.Selection.InlineShapes[1];
            //约束图形的宽度,将其限制在word页面的正文宽度之内
            WidthRestrain(shp, ContentWidth);

            //刷新visio屏幕
            app.ShowChanges = true;
        }
Пример #3
0
        }        private void gridView1_FocusedRowObjectChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventArgs e)
        {            if (e.RowHandle > 0)
            {
                // get the selcted cellRow
                int[] selRows = ((GridView)gridControl1.MainView).GetSelectedRows();
                // get a seleted row using handle position
                DataRowView selRow = (DataRowView)(((GridView)gridControl1.MainView).GetRow(e.RowHandle));
                // read a Shape of selected Row
                var shape = (Shape)selRow["Shape"];
                //var uId = selRow["UID"].ToString();
                //var shape = page.Shapes[uId];
                window.DeselectAll();
                //window.Select((Shapes)value, (short)VisSelectArgs.visSelect);
                this.TopMost = true;
                // Show the selectet Shape
                window.Select(shape, (short)VisSelectArgs.visSelect);
                ScrollViewToShape(shape);
            }        }        private void SearchDialog_FormClosing(object sender, FormClosingEventArgs e)
Пример #4
0
        private static void _invert_selection(IVisio.Window window)
        {
            if (window == null)
            {
                throw new System.ArgumentNullException(nameof(window));
            }

            if (window.Page == null)
            {
                throw new System.ArgumentException("Window has null page", nameof(window));
            }

            var page             = (IVisio.Page)window.Page;
            var shapes           = page.Shapes;
            var all_shapes       = shapes.ToEnumerable();
            var selection        = window.Selection;
            var selected_set     = new HashSet <IVisio.Shape>(selection.ToEnumerable());
            var shapes_to_select = all_shapes.Where(shape => !selected_set.Contains(shape)).ToList();

            window.DeselectAll();
            window.Select(shapes_to_select, IVisio.VisSelectArgs.visSelect);
        }