1

在我的一个 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;

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

4

1 回答 1

1

两种可能:

  1. 您可以将InsertAfter(and 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. 使用时创建第二个TextRange对象InsertAfter。语言参考说明:

将字符串追加到指定文本范围的末尾。返回一个表示附加文本的 TextRange 对象。

创建一个新的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;
于 2020-01-03T17:24:19.073 回答