本文主要分享一些在Visio二次开发中碰到的各种小问题及其解决方法:
1. 为图元设置颜色
在一些分析中,如电气线路分析中,需要根据不同的状态改变图元的颜色,那么如何改变指定图元的设备颜色呢?下面提供代码解决该问题。
C#进行Visio二次开发之鸡毛蒜皮(一)  shape.get_CellsU("LineColor").ResultIU = (double)VisDefaultColors.visDarkGreen;//有电(绿色)
C#进行Visio二次开发之鸡毛蒜皮(一)
其中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

............

上面的代码是比较简洁的写法,当然也可以使用下面这种方式:
C#进行Visio二次开发之鸡毛蒜皮(一)shape.get_CellsSRC((short)VisSectionIndices.visSectionObject, (short)VisRowIndices.visRowLine,(short)VisCellIndices.visLineColor).FormulaU = 4

2. 获取图元设备的连接关系
每个设备Shape都有一个Connects和FromConnects集合,该集合是Connect对象集合,每个Connect有ToSheet和FromSheet属性,分别是指向一个Shape对象,我们如果要获取设备的关联关系,就是需要判断这些Connect的ToSheet和FromSheet属性。
如下代码:
C#进行Visio二次开发之鸡毛蒜皮(一)            string strShapes = ";";
C#进行Visio二次开发之鸡毛蒜皮(一)            
if (IsSpecialEquipTypeInShape(shape))
            }

        }

3. 获取图元的属性集合
我们知道,每个图元Shape甚至Page对象都有很多自定义属性,你可以通过在Visio的开发模式中查看ShapeSheet查看到。而所有这些属性中,每行又代表一个属性的各种定义信息,如Label是什么,Prompt(提示)是什么,Value(值)是什么,Type(类型)是什么,这就有点类似于我们在数据库定义一个字段,需要指定字段的名称,类型等等,那如果我们需要把这些信息保存下来,我们该如何获取呢?下面举例说明:
C#进行Visio二次开发之鸡毛蒜皮(一)            Dictionary<string, StencilPropertyInfo> list = new Dictionary<string, StencilPropertyInfo>();
C#进行Visio二次开发之鸡毛蒜皮(一)            StencilPropertyInfo propertyInfo;
C#进行Visio二次开发之鸡毛蒜皮(一)            Visio.Cell shapeCell;
C#进行Visio二次开发之鸡毛蒜皮(一)            
short shortSectionProp = (short)VisSectionIndices.visSectionProp;
C#进行Visio二次开发之鸡毛蒜皮(一)
C#进行Visio二次开发之鸡毛蒜皮(一)            
if (shape != null)
 list;

4. 关闭视图中打开的所有模具
一般来说,一个Visio文档,一般会打开很多模具窗口,用来辅助画图的,我们有时候不小心关闭一些,又有可能打开多几个,那么你是如何记住这些打开的模具文件的呢,我们要如何关闭全部呢,你可以使用TryCatch来关闭每个文件,即使它可能已经关闭了,这种才保证不会出错;我们不太喜欢暴力,还有没有更好的方法呢,让它自己知道那些可以关闭的呢?

        }


5. 管理Visio内置的窗口
Visio控件提供了很多内置的窗口,你可以根据需要显示或者隐藏它,如我们常常看到的图元属性窗口、形状查询窗口、模具管理窗口等等,很典型的例子,我们很多时候不需要那个形状查询窗口,想把它隐藏,那么这些该如何操作呢?
我前面写过的文章C#进行Visio二次开发的常见问题处理 有说明,如下所示:

C#进行Visio二次开发之鸡毛蒜皮(一)        //Visio2007的形状窗口中去除搜索形状功能
C#进行Visio二次开发之鸡毛蒜皮(一)
            VisApplication.Settings.ShowShapeSearchPane = false;
C#进行Visio二次开发之鸡毛蒜皮(一)
#endregion


还有一种方式可以管理窗口,如下面代码,对各种内置的窗口实现了统一的管理

                }


这下明白了多少了呢,要饮水思源哦

C#进行Visio二次开发之鸡毛蒜皮(一)转载请注明出处:
C#进行Visio二次开发之鸡毛蒜皮(一)撰写人:伍华聪  http:
//www.iqidi.com 

相关文章: