2016-04-02 42 views
1

我有简单的c#outlook插件,它将当前字体保存在一个按钮单击事件上,并在第二个事件中恢复它。System.ArgumentException还原ActiveInspector.WordEditor.Application.Selection.Font

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. 
     } 
    } 

在此先感谢。

回答

0

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

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

我修改类似的代码: FontArr.Push(app.Selection.Font.Duplicate); 没有工作:(。 – vmiheer