在c#中检索Visio形状的连接点名称

本文关键字:连接点 检索 Visio | 更新日期: 2023-09-27 18:01:51

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

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

注:我在主形状的所谓的"ShapeSheet"中为连接点分配了名称,即可以看到连接点坐标的相同位置。

在c#中检索Visio形状的连接点名称

下面的示例使用Cell Indices循环遍历Connection Point行中的所有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;
}

给定一个Shape对象,您可以使用Cells属性获得连接点行的X单元格。如果您正在使用PIA,您可以像这样进行呼叫:

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

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

如果您正在使用不同的Visio本地化版本,或者您计划本地化您的应用程序,您应该调查cell和CellsU之间的区别。