C#进行Visio二次开发之Shape的Data1、Data2、Data3的用处
2008-06-01 10:45
344 查看
我们知道,Visio的Shape对象有有3个比较特别的属性,分别是Data1、Data2、Data3,平常我们很少用到它,因为我们如果需要属性的话,可能会通过ShapeSheet的Customed Properties中定义我们所需要的信息,需要各种属性的值都可以拿到,那么Data1、Data2、Data3对我们来说,就用处不大,但有的情况下,我们使用它进行一些操作却是非常方便的。
首先我们介绍下,这几个属性是什么东西,Data1、Data2、Data3是Shape的内置属性,不需要额外定义,而且它据说可以放置64K的字符串(没有试过这么大的),一般来说我们是足够放置内容的了。
言归正题,我们什么情况下会使用到这几个属性呢,大家想想,我们在绘图的时候,是不是总有个图框来列出图纸那些设备有几个的一个设备清单呢,或者是一个比例尺说明什么的,这些场合就可以 用上它们了。
因为这些线条,可能是我们随机画上去的,里面的一些设备的说明以及相关信息一般都是根据图纸变化而变化的,因此每次保存的时候,可能要重新绘制一下,但绘制的时候,为了有别于其他设备图元,我们使用这几个属性来记录相关信息。
//把原有的统计项先抹掉
if (VisioUtility.HasShapeInWindow(visApp.ActiveWindow))
Visio.Shape shape = VisioUtility.DrawRectangeOnPage(visApp, leftTopX, leftTopY - j * cellHeight,
leftTopX + leftCellWidth, leftTopY - (j + 1) * cellHeight);
然后给这个Shape的属性Data1、Data2、Data3赋值
//第一个单元格用于放统计项名称
shape.NameU = "某某名称";
shape.Text = "某某名称";
shape.Data1 = "tongji";//用tongji来标识Data1这个属性只是为了在删除这些框的时候便于查找到
//放置统计内容
shape = VisioUtility.DrawRectangeOnPage(visApp, leftTopX + leftCellWidth, leftTopY - j * cellHeight,
leftTopX + leftCellWidth + rightCellWidth, leftTopY - (j + 1) * cellHeight);
shape.NameU = "某某名称" + "v";
shape.Data1 = "tongji";
//Data2放模具组的名称,用来获取相关单位
shape.Data2 = "模具组名称";
以上是绘制统计图框,绘制完后,我们可能需要更新图框右边的统计值
foreach (Visio.Shape shape in page.Shapes)
if (shape.Data1.Equals("tongji", StringComparison.OrdinalIgnoreCase) &&
shape.NameU.Equals(string.Format("{0}v", resultInfo.DeviceType)))
}
}
整个应用就完成了,这里没有用到自定义属性,因为Data1、Data2、Data3的属性更好用,而且方便,你说呢?
首先我们介绍下,这几个属性是什么东西,Data1、Data2、Data3是Shape的内置属性,不需要额外定义,而且它据说可以放置64K的字符串(没有试过这么大的),一般来说我们是足够放置内容的了。
言归正题,我们什么情况下会使用到这几个属性呢,大家想想,我们在绘图的时候,是不是总有个图框来列出图纸那些设备有几个的一个设备清单呢,或者是一个比例尺说明什么的,这些场合就可以 用上它们了。
因为这些线条,可能是我们随机画上去的,里面的一些设备的说明以及相关信息一般都是根据图纸变化而变化的,因此每次保存的时候,可能要重新绘制一下,但绘制的时候,为了有别于其他设备图元,我们使用这几个属性来记录相关信息。
//把原有的统计项先抹掉
if (VisioUtility.HasShapeInWindow(visApp.ActiveWindow))
Visio.Shape shape = VisioUtility.DrawRectangeOnPage(visApp, leftTopX, leftTopY - j * cellHeight,
leftTopX + leftCellWidth, leftTopY - (j + 1) * cellHeight);
然后给这个Shape的属性Data1、Data2、Data3赋值
//第一个单元格用于放统计项名称
shape.NameU = "某某名称";
shape.Text = "某某名称";
shape.Data1 = "tongji";//用tongji来标识Data1这个属性只是为了在删除这些框的时候便于查找到
//放置统计内容
shape = VisioUtility.DrawRectangeOnPage(visApp, leftTopX + leftCellWidth, leftTopY - j * cellHeight,
leftTopX + leftCellWidth + rightCellWidth, leftTopY - (j + 1) * cellHeight);
shape.NameU = "某某名称" + "v";
shape.Data1 = "tongji";
//Data2放模具组的名称,用来获取相关单位
shape.Data2 = "模具组名称";
以上是绘制统计图框,绘制完后,我们可能需要更新图框右边的统计值
foreach (Visio.Shape shape in page.Shapes)
if (shape.Data1.Equals("tongji", StringComparison.OrdinalIgnoreCase) &&
shape.NameU.Equals(string.Format("{0}v", resultInfo.DeviceType)))
}
}
整个应用就完成了,这里没有用到自定义属性,因为Data1、Data2、Data3的属性更好用,而且方便,你说呢?
相关文章推荐
- C#进行Visio二次开发之Visio模具制作(1)
- 如何使用C#进行Visio二次开发-总结版
- 如何使用C#进行Visio二次开发
- C#进行Visio二次开发之知识点考核试题
- C#进行Visio二次开发之Visio模具制作(2)
- C#进行Visio二次开发之图纸缩放操作的实现
- C#进行Visio二次开发相关事件汇总
- C#进行Visio二次开发之文件导出及另存Web页面
- C#进行Visio二次开发之自定义右键菜单
- C#进行Visio二次开发的常见问题处理
- C#进行Visio二次开发之动态仿真实现
- C#进行Visio二次开发之鸡毛蒜皮(一)
- C#进行Visio二次开发之管理下拉列表
- C#进行Visio二次开发之Web查看Visio图纸
- C#进行Visio二次开发之界面设计及架构设计
- C#进行Visio二次开发
- C#进行Visio二次开发之文件导出及另存Web页面
- C#进行Visio二次开发之判断图纸是否有设备
- C#进行Visio二次开发之设备状态跟踪
- C#进行Visio二次开发之Web端启动绘图客户端并登录