2011-07-13 34 views
3

我正在使用Microsoft Visio 2007和Visual C#。 我有一些形状的模具。模板中每个主图形的每个连接点都有一个名称。我如何在C#中获取这些名称?在C中检索Visio形状的连接点名称#

我需要一种方法来区分形状的连接点,我认为给每个连接点分配一个名称是最简单的一个。

P.S. 我将名称分配给主形状的所谓“ShapeSheet”中的连接点,即可以看到连接点坐标的相同位置。

回答

3

以下示例使用Cell Indices来循环连接点行中的所有X单元。 RowName属性用于获取该节中每一行的名称。

Visio.Shape shape = // get the shape 

List<string> listOfNames = new List<string>(); 

// Loop through all the connection point rows in the shape. 
short iRow = (short) Visio.VisRowIndices.visRowConnectionPts; 
while (shape.get_RowExists(
    (short) Visio.VisSectionIndices.visSectionConnectionPts, 
    iRow, 
    (short) 0) != 0) 
{ 
    // Get a cell from the connection point row. 
    Visio.Cell cell = shape.get_CellsSRC(
     (short) Visio.VisSectionIndices.visSectionConnectionPts, 
     iRow, 
     (short) Visio.VisCellIndices.visCnnctX); 

    // Ask the cell what row it is in. 
    listOfNames.Add(cell.RowName); 

    // Next row. 
    ++iRow; 
} 
+0

谢谢你的好例子;) – sciarp

1

给定一个Shape对象,您可以使用Cells属性获取连接点行的X Cell。如果您使用的是PIA可以使这样一个电话:

Visio.Shape shape ; // get the shape 
Visio.Cell cell = shape.get_Cells("Connections.MyName.X");    

从这个Cell对象,您可以访问连接点行的其余部分。

如果您使用的是不同的本地化版本的Visio,或者您计划本地化您的应用程序,则应该调查CellsCellsU之间的差异。

+0

非常感谢您的回答。我没有使用PIA。无论如何,我想要做的是检索我与我的形状的每个连接点相关联的名称。如果我正确理解你写的是: 1 - 得到一个形状 2 - 获取单元格“MyName.x” 我不知道“先验”什么是“MyName.x”... 我是寻找一种方法来检索所有这些名字。 谢谢;) – sciarp