2016-04-02 66 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