在 Outlook 2013 加载项中使用 word.interop 格式化文本

Formatting text using word.interop in outlook 2013 add-in

我正在尝试格式化当用户按下功能区加载项中的按钮时我在新电子邮件开头插入的文本 代码很简单,因为它首先检查之前是否插入了文本类型,如果是则将其删除,然后使用 Word.Range.InsertBefore(.....) 插入一个新的文本括号; 案文将是: 分类: ....... 分类:......

我 运行 遇到的问题是在插入后我使用 Range.Font、文本等格式化字体... 我需要分类:......格式化而不是它们之间的 space

"CLASSIFICATION......" 之间的 space 在开始输入时被格式化为与 "CLASSIFICATION"

相同的大小、颜色等....

我使用的代码是:

        private void setClassificationText(string classificationText, Word.WdColorIndex color)
    {
        //current mail item document
        Word.Document document = (Word.Document)mailItem.GetInspector.WordEditor;           
        Word.Range rng = document.Paragraphs[1].Range;
        //check if a classification level was already supplied
        if (checkIfClassificationExists(rng))
        {
            //get the first 2 Paragraphs and remove the text from them
            int paraCount = 2;
            for (int i = 1; i <= paraCount; i++)
            {
                Word.Range classificationRange = document.Paragraphs[i].Range;
                removeTextFromParagraph(classificationRange);
            }

            rng.Collapse();
            rng = document.Paragraphs[1].Range;         
        }

        rng.InsertBefore(classificationText + CT.lineFeedStr5 + CT.classification + classificationText + CT.lineFeedStr3);      

        //sets the color and text
        rng.Font.ColorIndex = color;
        rng.Text = CT.classification + rng.Text;
        rng.Font.Bold = 1;
    }


        private void removeTextFromParagraph(Word.Range rng)
    {
        int wordCount = rng.Words.Count;
        rng.Delete(Count: wordCount);
    }

解决了我遇到的问题。 我使用了以下内容:

private void setClassificationText(string classificationText, Word.WdColorIndex color)
    {
        //current mail item document
        Word.Document document = (Word.Document)mailItem.GetInspector.WordEditor;
        Word.Range rng = document.Paragraphs[1].Range;
        //check if a classification level was already supplied
        if (checkIfClassificationExists(rng))
        {
            //get the first 2 Paragraphs and remove the text from them
            int paraCount = 2;
            for (int i = 1; i <= paraCount; i++)
            {
                Word.Range classificationRange = document.Paragraphs[i].Range;
                removeTextFromParagraph(classificationRange);
            }

            rng.Collapse();
            rng = document.Paragraphs[1].Range;
        }

        //insert the text
        rng.InsertBefore(classificationText + CT.lineFeedStr5 + CT.classification + classificationText);        

        //sets the color and text
        rng.Font.ColorIndex = color;
        rng.Text = CT.classification + rng.Text;
        rng.Font.Bold = 1;

        //get the beginning and ending positions of the blank space
        startPosition = rng.Start + getClassificationLength(classificationText);
        endPosition = (int)startPosition + CT.lineFeedStr5.Length-1;

        //get the Word.Range for the blank space
        Word.Range rngNormal = document.Range(ref startPosition, endPosition);
        //set blank space to be normal font (not bold and black)
        rngNormal.Bold = 0;
        rngNormal.Font.ColorIndex = Word.WdColorIndex.wdBlack;
    }

private int getClassificationLength(string classificationText)
    {
        int returnValue = 0;
        returnValue = CT.classification.Length + classificationText.Length;
        return returnValue;
    }

希望这可以帮助其他人。