Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在VSTO WordDocument上绘图而不在文档中保存形状_C#_Vsto_Office Interop - Fatal编程技术网

C# 在VSTO WordDocument上绘图而不在文档中保存形状

C# 在VSTO WordDocument上绘图而不在文档中保存形状,c#,vsto,office-interop,C#,Vsto,Office Interop,我们正在尝试创建一个VSTO Word 2013文档Addin,该文档在用户编辑时覆盖文档上的视觉指示器,以使他们意识到所键入信息的问题。这似乎可以通过绘制如下示例所示的形状来实现。在我们的例子中,我们不希望这些形状与文档一起保存,我们只希望它们在安装了加载项的文档编辑时可用。有人能解释一下我们是怎么做到的吗 private void DrawIt() { object oRng = Globals.ThisDocument.Application.Selection.Range;

我们正在尝试创建一个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;
}

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