How programatically set text styling in ms word?

五迷三道 提交于 2019-12-02 17:38:43

问题


Situation:
I'm working with MS Word document's contents. I'm changing color of some words according to some rule. Words coloring occurs on each KeyPress event.

Problem:
When user types word which satisfies my rule typed word become colored and infects future text which will be typed right after colored text. But future text may not satisfay the rule. From the one hand, just typed text shouldn't be colored but from the other hand it already colored because it unfortunately goes right after colored text and was infected by it's style.

Question: How grab Word.Range object corresponding to the current cursor position and expicitly set font color to neutral default color? I tried

Word.Range r = app.Application.ActiveDocument.Range(
app.Application.ActiveDocument.Bookmarks[@"\Sel"].Range.Start,
app.Application.ActiveDocument.Bookmarks[@"\Sel"].Range.End);
r.Font.Color = WdColor.wdColorBlack;

and

Word.Range r = app.Application.ActiveDocument.Bookmarks[@"\Sel"].Range;
r.Font.Color = WdColor.wdColorBlack;

回答1:


To set default color you have two options:

//really default color:
r.Font.ColorIndex = Word.WdColorIndex.wdAuto;

//assuming default is black- set it to black
r.Font.ColorIndex = Word.WdColorIndex.wdBlack;

Edit. To set the color back to default as of selected range you could try this code:

Word.Application.Selection.Font.ColorIndex = Word.WdColorIndex.wdAuto;

It doesn't refer to active document but to Selection of the application. After you run it next words are written in default color.



来源:https://stackoverflow.com/questions/17888104/how-programatically-set-text-styling-in-ms-word

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!