C#进行Visio二次开发之鸡毛蒜皮5588葡京线路(一)

本文重要分享部分在Visio二次开发中碰到的各样小问题及其解决措施:

列车临时停车的时候,林瑜看了一眼车窗外,一侧的户外是一条斜纵的羊肠小道,电线杆安静地挺在麦田里。另一侧是乌漆漆的煤运火车,标着多少个看不太懂的数字。

  1. 为图元设置颜色
    在部分分析中,如电气线路分析中,需要遵照不同的场合改变图元的水彩,那么如何改变指定图元的装备颜色吗?下边提供代码解决该问题。

他听了接近一个刻钟的音乐,等回过神来,车还从未出发,车厢里还有人在吃中饭,泡面的意味让他沉浸了会儿,转又戴上了耳麦。

5588葡京线路 1  shape.get_CellsU(“LineColor”).ResultIU = (double)VisDefaultColors.visDarkGreen;//有电(绿色)
5588葡京线路 2

等车五个钟头之后她起头觉得渴,书包放在行李架上,车厢里人潮拥挤,不太好意思麻烦别人帮他取,卖零食的车推过来,她问了可乐的标价,六块,售货员有点凶,她摇摇头,不要了谢谢。

里面VisDefaultColors是一个枚举,有这多少个颜料,可以查下SDK,也得以接纳其相应的数值来代表

车上有三个儿童,一个孩子开端哭,撕心裂肺的哭,要吃奶,大姨说在人前不可以吃奶,孩子就大声哭嚷,林瑜瞪了这孩子一眼,这儿女旁若无人地连续大哭,大约二十分钟终于要停下的时候,另一个男女开首哭,要下车玩,家长心潮澎湃地抱着他,像是孩子刚出生必须要哭几声我们才精晓她存在一样,连续不停的哭声加剧了车厢里隐藏已久的抑郁。

Constant Value Description

visBlack

0

Black

visBlue

4

Blue

visCyan

7

Cyan

visDarkBlue

10

Dark blue

visDarkCyan

13

Dark cyan

visDarkGray

19

Dark gray

visDarkGreen

9

Dark green

visDarkRed

8

Dark red

visDarkYellow

11

Dark yellow

五个半钟头了吧,她打开手机看了看,准备去一趟洗手间,在洗煤间门口等候的空里,她见到了有人在网上查询晚点时间,还有不到一个刻钟才能出发,她想了想音乐列表里躺的是几首歌,大概听一回就能出发了。

…………

归来站位上的时候,旁边学生模样的人无可奈何的说了句手机电量要耗尽了,她再看看窗外,小路延伸的势头破旧的屋子空荡荡地竖在视线里,乘务员通过的时候,我们像围观外星生物一样问这问这,什么时候走,为何停车,哪个地方故障了,车厢拥挤不堪,一些人大叫着,向前走呀,堵着怎么!乘务员什么实际的话也没有说,只是尽量安抚游客的心境。她打开手机,时间表又向后拖延了半钟头。戴动铁耳机太久了脑袋干巴巴地疼,大概把列表里的音乐再听一回,应该能出发了。

地方的代码是相比简单的写法,当然也足以利用下边这种方法:

也就五秒钟的光阴,她再一次查询的时候已经又晚点半钟头,此时早已停车4个刻钟,她初步摸索火车晚点的赔付,可惜并从未有用的章程,她又查询晚点时间,已经远非有关音讯了。又有乘务员通过时,告诉我们前方车站线路故障,所有的车都在此间停着。

5588葡京线路 3shape.get_CellsSRC((short)VisSectionIndices.visSectionObject, (short)VisRowIndices.visRowLine,(short)VisCellIndices.visLineColor).FormulaU = 4

旁边的煤运火车开走了,十分钟后又来了一辆又开走了,再过了充足钟左右,又是一辆经过的车。

  1. 收获图元设备的连日关系
    各种设备Shape都有一个Connects和FromConnects集合,该集合是Connect对象集合,每个Connect有ToSheet和FromSheet属性,分别是指向一个Shape对象,我们假设要取得装备的关系关系,就是内需看清这些Connect的ToSheet和FromSheet属性。
    如下代码:

停车5个钟头之后,太阳落下去了,天苍苍黑,路灯发出微弱的光,火车广播热切切的说起来供应晚餐了,餐车和零食车穿梭推过来,游客们五遍又一次躲避,小车的车轮也碾过一位又一位乘客的脚。

5588葡京线路 4            string strShapes = “;”;
5588葡京线路 5            if (IsSpecialEquipTypeInShape(shape))
5588葡京线路 65588葡京线路 7            5588葡京线路 8{
5588葡京线路 9                foreach (Visio.Connect connect in shape.Connects)
5588葡京线路 105588葡京线路 11                5588葡京线路 12{
5588葡京线路 13                    strShapes += GetConnectsShapes(shape, connect.ToSheet);     //检查衔接的设备
5588葡京线路 14                    strShapes += GetConnectsShapes(shape, connect.FromSheet);   //检查接出的设施
5588葡京线路 15                }
5588葡京线路 16
5588葡京线路 17                foreach (Visio.Connect connect in shape.FromConnects)
5588葡京线路 185588葡京线路 19                5588葡京线路 20{
5588葡京线路 21                    strShapes += GetConnectsShapes(shape, connect.ToSheet);     //检查衔接的装备
5588葡京线路 22                    strShapes += GetConnectsShapes(shape, connect.FromSheet);   //检查接出的配备
5588葡京线路 23                }
5588葡京线路 24            }

零食车的胖乘务员在通过这节车厢时,使劲碾过了一位乘客的脚,还没等回过神来,又大力挤着这位游客的大腿,游客叫了一声,胖乘务员不耐烦地如故延续往前推,游客低声咒骂了一句,胖乘务员不甘示弱一分钟回骂过去,游客伸出手去抓胖乘务员的毛发,不想服装的拉链甩过一个孩子的脸,孩子哇的一声大哭起来,家长站起来一拳揍到游客的脸颊,车厢人多,这位游客一个磕磕绊绊没有摔倒,后边的人却像多米诺骨牌一样倒下了,车厢里惨叫连连,孩子们都吓哭了,一时间乱成一碗掺了酸咸苦辣的辽阔腐臭的粥。

5588葡京线路 255588葡京线路 26        /**//// <summary>
5588葡京线路 27        /// 获取与近来的图元连接(接入或接出)的保有有关设施
5588葡京线路 28        /// </summary>
5588葡京线路 29        private string GetConnectsShapes(Visio.Shape shape, Visio.Shape toFromSheet)
5588葡京线路 305588葡京线路 31        5588葡京线路 32{
5588葡京线路 33            string strShapes = string.Empty;
5588葡京线路 34            bool exist = VisioUtility.ShapeCellExist(toFromSheet, “设备档次”);
5588葡京线路 35            bool isSpecial = IsSpecialEquipTypeInShape(toFromSheet);
5588葡京线路 36
5588葡京线路 37            if (toFromSheet != null && exist && isSpecial)
5588葡京线路 385588葡京线路 39            5588葡京线路 40{
5588葡京线路 41                //Visio图元的连续集合,会存放自己本身的,所以这边需要看清。
5588葡京线路 42                if (shape.ID != toFromSheet.ID)
5588葡京线路 435588葡京线路 44                5588葡京线路 45{
5588葡京线路 46                    strShapes += string.Format(“{0};”, toFromSheet.ID);
5588葡京线路 47                }
5588葡京线路 48            }
5588葡京线路 49
5588葡京线路 50            return strShapes;
5588葡京线路 51        }

车厢里打起来了,被踩踏的人满脸都是血,倒在地上根本站不起来,肇事的胖乘务员像一条巨大的鲨鱼游向窗边,外面完全暗下来了,她取下安全锤使劲砸向窗户,一下,两下,巨大的音响吸引了整个车厢里的秋波,三下,四下,嘭!车窗被砸开,玻璃碎片划过他的肩头,她大胆跳下车窗,乘客接连着起来往下跳,从行李架上取下自己的箱子往窗外扔,刚跳下车的游客被箱子砸中,发出一声沉闷的痛叫,人们沿着火车的守则往前跑,像极了逃离僵尸的幸存者。

  1. 赢得图元的性质集合
    咱俩知道,每个图元Shape甚至Page对象都有好多自定义属性,你可以经过在Visio的开销模式中查阅ShapeSheet查看到。而持有这个属性中,每行又意味着一个性能的各种定义音信,如Label是什么样,Prompt(提醒)是如何,Value(值)是怎么,Type(类型)是怎么,这就有点类似于我们在数据库定义一个字段,需要指定字段的名称,类型等等,这假使我们需要把那一个新闻保存下去,我们该怎么赢得呢?下边举例说明:

林瑜在角落离躲了很久,直到车厢里的人逃空了,她从地上捡起满是污浊的行李箱,往窗外扔,自己跳下去的时候才意识小腿受伤,她昏沉沉地前进走,逐步的,她起来以为大地在以后退,她差点没站稳。

5588葡京线路 52            Dictionary<string, StencilPropertyInfo> list = new Dictionary<string, StencilPropertyInfo>();
5588葡京线路 53            StencilPropertyInfo propertyInfo;
5588葡京线路 54            Visio.Cell shapeCell;
5588葡京线路 55            short shortSectionProp = (short)VisSectionIndices.visSectionProp;
5588葡京线路 56
5588葡京线路 57            if (shape != null)
5588葡京线路 585588葡京线路 59            5588葡京线路 60{
5588葡京线路 61                for (short i = 0; i < shape.get_RowCount(shortSectionProp); i++)
5588葡京线路 625588葡京线路 63                5588葡京线路 64{
5588葡京线路 65                    if (shape.get_CellsSRCExists(shortSectionProp, i, (short)VisCellIndices.visCustPropsLabel, 0) != 0)
5588葡京线路 665588葡京线路 67                    5588葡京线路 68{
5588葡京线路 69                        propertyInfo = new StencilPropertyInfo();
5588葡京线路 70
5588葡京线路 71                        shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsLabel);
5588葡京线路 72                        propertyInfo.Name = VisioUtility.FormulaStringToString(shapeCell.RowNameU);
5588葡京线路 73
5588葡京线路 74                        shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsPrompt);
5588葡京线路 75                        propertyInfo.Prompt = VisioUtility.FormulaStringToString(shapeCell.FormulaU);
5588葡京线路 76
5588葡京线路 77                        shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsFormat);
5588葡京线路 78                        propertyInfo.Format = VisioUtility.FormulaStringToString(shapeCell.FormulaU);
5588葡京线路 79
5588葡京线路 80                        shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsValue);
5588葡京线路 81                        propertyInfo.Value = VisioUtility.FormulaStringToString(shapeCell.FormulaU);
5588葡京线路 82
5588葡京线路 83                        shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsSortKey);
5588葡京线路 84                        propertyInfo.SortKey = VisioUtility.FormulaStringToString(shapeCell.FormulaU);
5588葡京线路 85
5588葡京线路 86                        shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsType);
5588葡京线路 87                        propertyInfo.PropType = (PropType)shapeCell.get_ResultInt((short)VisUnitCodes.visNumber, 0);

“终于启动了!”车厢里一阵跳跃,接着是扩张的掌声,她环顾了一圈车里的人,涨红了脸。

5588葡京线路 88                        shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsInvis);
5588葡京线路 89                        if (“True”.Equals(VisioUtility.FormulaStringToString(shapeCell.FormulaU), StringComparison.OrdinalIgnoreCase))
5588葡京线路 905588葡京线路 91                        5588葡京线路 92{
5588葡京线路 93                            propertyInfo.InVisible = true;
5588葡京线路 94                        }
5588葡京线路 95
5588葡京线路 96                        propertyInfo.PropRowID = i;                       
5588葡京线路 97
5588葡京线路 98                        if(!list.ContainsKey(propertyInfo.Name))
5588葡京线路 995588葡京线路 100                        5588葡京线路 101{
5588葡京线路 102                            list.Add(propertyInfo.Name, propertyInfo);
5588葡京线路 103                        }
5588葡京线路 104                    }
5588葡京线路 105                }
5588葡京线路 106            }
5588葡京线路 107
5588葡京线路 108            return list;

5小时18分。

  1. 关闭视图中开拓的装有模具
    相似的话,一个Visio文档,一般会打开很多模具窗口,用来协理画图的,我们偶尔不小心关闭部分,又有可能打开多多少个,那么你是什么样记住那一个打开的模具文件的呢,大家要怎么样关闭所有吧,你可以选用TryCatch来关闭每个文件,虽然它或许已经倒闭了,这种才确保不会出错;我们不太喜欢暴力,还有没有更好的办法吗,让它自己通晓那个可以关闭的吗?

5588葡京线路 1095588葡京线路 110        /**//// <summary>
5588葡京线路 111        /// 关闭视图中开拓的持有模具
5588葡京线路 112        /// </summary>
5588葡京线路 113        /// <param name=”visApp”></param>
5588葡京线路 114        /// <returns></returns>
5588葡京线路 115        public bool CloseAllStencileDocument(Application visApp)
5588葡京线路 1165588葡京线路 117        5588葡京线路 118{
5588葡京线路 119            string[] strs = new string[0];
5588葡京线路 120            Array arr = strs as Array;
5588葡京线路 121            visApp.Documents.GetNames(out arr);
5588葡京线路 122            Document visDoc;
5588葡京线路 123            foreach (object file in arr)
5588葡京线路 1245588葡京线路 125            5588葡京线路 126{
5588葡京线路 127                if (file.ToString().IndexOf(“.vss”, StringComparison.OrdinalIgnoreCase) > 0)
5588葡京线路 1285588葡京线路 129                5588葡京线路 130{
5588葡京线路 131                    visDoc = visApp.Documents[file];
5588葡京线路 132                    if (visDoc != null)
5588葡京线路 1335588葡京线路 134                    5588葡京线路 135{
5588葡京线路 136                        visDoc.Close();
5588葡京线路 137                    }
5588葡京线路 138                }
5588葡京线路 139            }
5588葡京线路 140            return true;
5588葡京线路 141        }

  1. 管制Visio内置的窗口
    Visio控件提供了重重内置的窗口,你可以按照需要体现或者隐藏它,如我辈通常见到的图元属性窗口、形状查询窗口、模具管理窗口等等,很出众的例证,我们不少时候不需要充足造型查询窗口,想把它隐藏,那么这一个该怎么操作呢?
    本身眼前写过的稿子C#举办Visio二次开发的宽广问题处理
    有表达,如下所示:

5588葡京线路 142        //Visio2007的形态窗口中删去搜索形状效用
5588葡京线路 143            VisApplication.Settings.ShowShapeSearchPane = false;
5588葡京线路 144
5588葡京线路 1455588葡京线路 146            Visio2003的ShowShapeSearchPane实现模式Visio2003的ShowShapeSearchPane实现方式#region Visio2003的ShowShapeSearchPane实现形式
5588葡京线路 147            //Window searchWindow = wndVisio.Windows.get_ItemFromID(Convert.ToInt16(VisWinTypes.visWinIDShapeSearch));
5588葡京线路 148            //if (searchWindow != null)
5588葡京线路 149            //{
5588葡京线路 150            //    searchWindow.Visible = false;
5588葡京线路 151            //} 
5588葡京线路 152            #endregion

还有一种办法得以管理窗口,如下边代码,对各类内置的窗口实现了合并的军事管制

5588葡京线路 1535588葡京线路 154                for (int i = drawingControl.Window.Windows.Count; i > 0; i–) 5588葡京线路 155{
5588葡京线路 156                    Window visWindow;
5588葡京线路 157                    int windowType;
5588葡京线路 158
5588葡京线路 159                    visWindow = drawingControl.Window.Windows.get_ItemEx(i);
5588葡京线路 160                    windowType = visWindow.Type;
5588葡京线路 161
5588葡京线路 1625588葡京线路 163                    if (windowType == (int) VisWinTypes.visAnchorBarBuiltIn) 5588葡京线路 164{
5588葡京线路 165
5588葡京线路 166                        switch (visWindow.ID) 
5588葡京线路 1675588葡京线路 168                        5588葡京线路 169{
5588葡京线路 170                            case (int) VisWinTypes.visWinIDCustProp:
5588葡京线路 171                            case (int) VisWinTypes.visWinIDDrawingExplorer:
5588葡京线路 172                            case (int) VisWinTypes.visWinIDMasterExplorer:
5588葡京线路 173                            case (int) VisWinTypes.visWinIDPanZoom:
5588葡京线路 174                            case (int) VisWinTypes.visWinIDShapeSearch:
5588葡京线路 175                            case (int) VisWinTypes.visWinIDSizePos:
5588葡京线路 176                            case (int) VisWinTypes.visWinIDStencilExplorer:
5588葡京线路 177
5588葡京线路 178                                visWindow.Visible = false;
5588葡京线路 179                                break;
5588葡京线路 180
5588葡京线路 181                            default:
5588葡京线路 182                                break;
5588葡京线路 183                        }
5588葡京线路 184                    }
5588葡京线路 185                }

这下通晓了不怎么了呢,要饮水思源哦

5588葡京线路 186转载请声明出处:
5588葡京线路 187撰写人:伍华聪  http://www.iqidi.com