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

如何使用C#结合Microsoft.Office.Interop.Visio为Visio形状添加ScreenTip

C# 操作Visio形状添加ScreenTip报错解决方案

错误原因

  • 你遇到的Unexpected end of file.报错核心原因是默认Visio形状不存在预定义的Controls.TestName行,直接访问Controls.TestName.Tip单元格相当于操作ShapeSheet中不存在的行,引发底层读写异常。
  • 附加逻辑错误:Controls.xxx.Tip单元格存储的是鼠标悬停时展示的提示文本,你赋值"10 pt"不符合业务逻辑,且给Formula属性赋值纯文本时没有加英文双引号包裹,Visio会将内容识别为公式解析,也会触发语法错误。

正确实现方案

方案1:基于Controls Section实现(符合你参考的文档逻辑)

需要先给形状添加对应Controls行再赋值,代码示例如下:

// 原有基础属性设置
visioRectShape.get_Cells("FillForegnd").Formula = "RGB(0,102,255)";
visioRectShape.get_Cells("Char.Size").Formula = "10 pt";

// 1. 给形状新增Controls行
short controlRowIndex = (short)Visio.VisRowIndices.visRowFirst;
visioRectShape.AddRow((short)Visio.VisSectionIndices.visSectionControls, controlRowIndex, (short)Visio.VisRowTags.visTagControl);
// 给新增的Controls行命名为TestName
visioRectShape.RowName[(short)Visio.VisSectionIndices.visSectionControls, controlRowIndex] = "TestName";

// 2. 给Tip单元格赋值提示文本,注意文本外层要加英文双引号
visioRectShape.get_CellsU("Controls.TestName.Tip").Formula = "\"你的自定义提示内容\"";

方案2:更简单的全局形状ScreenTip设置

如果你只需要给整个形状添加通用悬停提示,不需要关联Controls控制点,无需操作ShapeSheet,直接调用形状内置属性即可:

visioRectShape.ScreenTip = "你的自定义提示内容";

内容的提问来源于stack exchange,提问作者samer nassar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:06:03