You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过C#/VBA代码在Visio连接线形状上添加多段文本?

在Visio连接线上添加多段文本的C#正确实现方式

你的代码存在几个关键问题,导致无法实现多段文本需求:

  • 无需将连接线转为组:Visio连接线(Connector)原生支持添加多段文本或独立文本块,转组会破坏连接线的路径关联属性。
  • TextStyle.PadLeft用法错误:TextStyle是样式对象,不能直接调用PadLeft方法,需通过文本的段落属性设置缩进。
  • 直接设置组文本只能添加单一段落,无法实现多段文本的位置或内容拆分。

方案1:添加多行(多段落)连续文本

如果需要在连接线上显示连续的多行文本,可直接设置连接线的Text属性并配置段落格式:

// 获取目标连接线形状
Visio.Shape connectorShape = visioPage.Shapes.get_ItemFromID(lastshapeID);

// 用换行符分隔不同段落,设置多段文本
connectorShape.Text = "Testing 1\nTesting 2\nTesting 3";

// 获取文本对象,批量设置段落左缩进(单位为英寸,0.39≈10mm)
Visio.Characters textChars = connectorShape.Characters;
textChars.Begin = 0;
textChars.End = (int)textChars.Count;

foreach (Visio.Paragraph para in textChars.Paragraphs)
{
    para.IndentLeft = 0.39;
}

方案2:在连接线不同位置添加独立文本块

如果需要在连接线的不同路径位置(如起点、中间、终点附近)添加独立文本块,可通过AddText方法将文本绑定到连接线:

Visio.Shape connectorShape = visioPage.Shapes.get_ItemFromID(lastshapeID);
Visio.Page visioPage = app.ActivePage;

// 创建第一个文本块,绑定到连接线30%位置(0=起点,1=终点)
Visio.Shape textBlock1 = visioPage.DrawText(0, 0, "第一段文本");
connectorShape.AddText(textBlock1, 0.3);
textBlock1.CellsU("Para.IndLeft").FormulaU = "10 mm";
textBlock1.TextStyle = "Normal";

// 创建第二个文本块,绑定到连接线70%位置
Visio.Shape textBlock2 = visioPage.DrawText(0, 0, "第二段文本");
connectorShape.AddText(textBlock2, 0.7);
textBlock2.CellsU("Para.IndLeft").FormulaU = "10 mm";

内容的提问来源于stack exchange,提问作者Nihar Sahoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:25:37