恢复ActiveInspector.WordEditor.Application.Selection.Font时出现System.ArgumentException

时间:2016-04-02 11:09:30

标签: c# outlook-addin

我有一个简单的c#outlook插件,可以将当前字体保存在一个按钮点击事件上,并在第二个事件中恢复它。

    private void button1_Click(object sender, RibbonControlEventArgs e)
    {
        var a = Globals.ThisAddIn;
        Outlook.Inspector inspector = a.Application.ActiveInspector();
        if (inspector.EditorType == OlEditorType.olEditorWord)
        {
            Word.Document doc = inspector.WordEditor;
            Word.Application app = doc.Application;
            FontArr.Push(app.Selection.Font);
        }
    }

    private void PopFormat_Click(object sender, RibbonControlEventArgs e)
    {
        var a = Globals.ThisAddIn;
        Outlook.Inspector inspector = a.Application.ActiveInspector();
        if (inspector.EditorType == OlEditorType.olEditorWord)
        {
            Word.Document doc = inspector.WordEditor;
            Word.Application app = doc.Application;
            Word.Font f = FontArr.Pop();
            app.Selection.Font = f; // at this line exception occurs.
        }
    }

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用Font类的Duplicate属性,该属性返回一个只读Font对象,该对象表示指定字体的字符格式。您可以使用重复属性来获取重复的Font对象的所有属性的设置。您可以将Duplicate属性返回的对象分配给另一个Font对象,以便一次性应用这些设置。在将复制对象分配给另一个对象之前,您可以更改复制对象的任何属性,而不会影响原始对象。

 FontArr.Push(app.Selection.Font.Duplicate);