C# PowerPoint VSTO 插件:在 PowerPoint TextRange 中添加文本后更改上标字体样式

C# PowerPoint VSTO Addin: Change superscript font style after added text in PowerPoint TextRange

在我的一个 C# PowerPoint VSTO 插件中,我在形状的 TextRange 中的当前光标位置添加了一些上标文本,如下所示

PowerPoint.TextRange superscriptText = Globals.ThisAddIn.Application.ActiveWindow.Selection.TextRange.InsertAfter("xyz");
superscriptText.Font.Superscript = Office.MsoTriState.msoCTrue;

这按预期工作:字符串 "xyz" 被插入到当前光标位置的上标中。问题是,一旦插入 "xyz",其后所有文本的字体样式仍为上标,即用户在插入 "xyz" 后在光标处键入的文本。插入上标文本后,如何将光标处的 tex 样式更改回非上标?我没有成功尝试

Globals.ThisAddIn.Application.ActiveWindow.Selection.TextRange.Font.Superscript = Office.MsoTriState.msoFalse;

但进一步键入的文本仍以上标形式继续。

两种可能:

  1. 您可以结合所需的格式使用 InsertAfter(和 InsertBefore)方法。

格式附加到 InsertAfter 方法:

PowerPoint.TextRange superscriptText = Globals.ThisAddIn.Application.ActiveWindow.Selection.TextRange;
superscriptText.InsertAfter("xyz").Font.Superscript = Office.MsoTriState.msoCTrue;
superscriptText.InsertAfter(" not superscript").Font.Superscript = Office.MsoTriState.msoCFalse;
  1. 使用 InsertAfter 时创建第二个 TextRange 对象。语言参考说明:

Appends a string to the end of the specified text range. Returns a TextRange object that represents the appended text.

新建TextRange并单独格式化

PowerPoint.TextRange superscriptText = Globals.ThisAddIn.Application.ActiveWindow.Selection.TextRange;
superscriptText.InsertAfter("xyz")
superscriptText.Font.Superscript = Office.MsoTriState.msoCTrue;
PowerPoint.TextRange normalText = superscriptText.InsertAfter(" not superscript")
normalText.Font.Superscript = Office.MsoTriState.msoCFalse;