ms-word C # Найти все цвета, используемые в активном документе - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть документ Word, и текст в нем имеет много цветов. Я хочу найти цвета, которые используются в документе thid, чтобы я мог поместить строку до и после нее. Он загружает цвета в пользовательский интерфейс в Winforms. Я попытался найти и заменить весь список wdColors следующим образом:

doc.Selection.Find.Font.Color = wdColor.Red

Однако, если цвет текста в этом wdColor, он работает нормально. Но есть цвета, которые есть число, а не из перечисления. Другая проблема заключается в том, что это может быть тот же цвет на документе, но иногда он имеет wdColor и somtims число. Например, красный цвет может быть wdColorRed, а число 225. Если есть диапазон, у которого FontColor = 225, и я попытаюсь найти wdColorRed, который не сможет его найти. Как я могу найти цвета в документе без цикла броска каждого символа и проверки его цвета? У меня есть этот код для этого

   var name = Enum.GetValues(typeof(word.WdColor)).Cast<word.WdColor>().ToList();
        var app = (word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");
        var doc = app.ActiveDocument;

        for (int i = 0; i < name.Count; i++)
        {
            var found = FindAndReplace(app, "", "", false, name[i]);
            if (found)
            {
          flowLayoutPanel1.Controls.Add(new HighLightControl(name[i].ToString(), name[i]));
            }
            app.Selection.HomeKey(word.WdUnits.wdStory);  
        }
...