c# Visio Interop Shape.Linetype 有效值

c# Visio Interop Shape.Linetype valid values

我仍在忙于使用 C# 和 Interop 在 Visio 中创建流程图。 现在我需要在特殊情况下更改连接器的 LineStyle。 更具体地说,我需要去掉连接器上的“To-arrow”。 我搜索了 LineStyle 属性 的有效值列表,但没有成功。 我最接近的是将它设置为“指南”,这会给我一条没有箭头的虚线,而“实线”或“实线”会产生异常错误。 有谁知道在哪里可以找到 LineStyle 的可能值,或者有人可以告诉我用于不带箭头的实线的值。

要为形状设置 Style,文档需要包含该名称的样式,因此您首先需要创建或导入自定义样式。然后,您可以通过按照下面代码的最后一行进行设置来应用该样式。

但是,如果您只想设置单独的格式属性,则可以按照下面的主要代码直接处理 ShapeSheet 单元格。

一般来说,我很想将这种逻辑放入主连接器并将其映射到形状中的某些形状数据,但编程访问也很好。

如果您不熟悉 ShapeSheet,您可能会发现我几年前制作的这个视频很有用:https://visualsignals.typepad.co.uk/vislog/2016/04/new-visio-training-videos.html

void Main()
{
    var vApp = MyExtensions.GetRunningVisio();
    // See this link for more details on GetRunningVisio():
    // https://visualsignals.typepad.co.uk/vislog/2015/12/getting-started-with-c-in-linqpad-with-visio.html

    var connShp = vApp.ActivePage.Drop(vApp.ConnectorToolDataObject, 1.75, 11.0);

    // Either set cells using SRC (Section, Row, Column) syntax
    connShp.CellsSRC[(short)Visio.VisSectionIndices.visSectionObject,
                     (short)Visio.VisRowIndices.visRowXForm1D,
                     (short)Visio.VisCellIndices.vis1DBeginY].ResultIU = 11.0;
    connShp.CellsSRC[(short)Visio.VisSectionIndices.visSectionObject, 
                     (short)Visio.VisRowIndices.visRowXForm1D,
                     (short)Visio.VisCellIndices.vis1DEndX].ResultIU = 2.0;
    connShp.CellsSRC[(short)Visio.VisSectionIndices.visSectionObject,
                     (short)Visio.VisRowIndices.visRowXForm1D,
                     (short)Visio.VisCellIndices.vis1DEndY].ResultIU = 10.5;
    
    // ...or by Cell name syntax
    // connShp.CellsU["BeginY"].ResultIU = 11.0;
    // connShp.CellsU["EndX"].ResultIU = 2.0;
    // connShp.CellsU["EndY"].ResultIU = 10.5;
    
    // Set appropriate cells in the 'Line Format' section
    connShp.CellsU["LinePattern"].FormulaU = "=2"; // 2 = dotted
    connShp.CellsU["EndArrow"].FormulaU = "=6"; // 6 = 'Outdented filled arrow', 0 = 'None'
    
    // if you really want to change just the line style
    // connShp.LineStyle = "MyCustomLineStyle";
}

LinePatternEndArrow 单元格的值映射到 UI 中找到的值。