在VSTO Word文档上绘图而不保存文档中的形状

时间:2014-06-27 15:08:50

标签: c# vsto office-interop

我们正在尝试创建一个 VSTO Word 2013文档插件,在用户编辑时覆盖文档上的可视指示符,以使他们了解所输入信息的问题。看来这可以通过绘制形状来完成,例如下面的示例。在我们的例子中,我们不希望这些形状与文档一起保存,我们只是希望在编辑安装了addin的文档时可以使用它们。任何人都可以解释我们如何做到这一点?

private void DrawIt()
{
    object oRng = Globals.ThisDocument.Application.Selection.Range;
    var doc = Globals.ThisDocument.InnerObject;

    var shape = doc.Shapes.AddLine(100f, 100f, 100f, 200f, ref oRng);

    if (shape == null) return;

    shape.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
    shape.Line.DashStyle = Microsoft.Office.Core.MsoLineDashStyle.msoLineDash;
    shape.Line.Weight = 3;
}

1 个答案:

答案 0 :(得分:2)

我95%确定Word对象模型中没有任何内容允许您执行您之后的操作。正如您所发现的,形状被视为文档的一部分。没有用于以任何其他方式显示任意形状的内置机制。您可以通过管理自己的窗口手动执行此操作 - 获取包含文档的窗口的Hwnd,然后使用Win32(和/或WinForms / WPF)创建要显示的UI。