c # сравнение объектов стиля в MS Word - PullRequest
0 голосов
/ 05 декабря 2018

Мне нужно отредактировать все заголовки в текстовом документе.

Я пробовал это:

Word.WdBuiltinStyle[] styleArray = {
    Word.WdBuiltinStyle.wdStyleHeading1,
    Word.WdBuiltinStyle.wdStyleHeading2,
    Word.WdBuiltinStyle.wdStyleHeading3,
    Word.WdBuiltinStyle.wdStyleHeading4,
    Word.WdBuiltinStyle.wdStyleHeading5,
    Word.WdBuiltinStyle.wdStyleHeading6,
    Word.WdBuiltinStyle.wdStyleHeading7,
    Word.WdBuiltinStyle.wdStyleHeading8,
    Word.WdBuiltinStyle.wdStyleHeading9
  };

  foreach (Word.Paragraph paragraph in Globals.ThisAddIn.Application.ActiveDocument.Paragraphs)
  {
    if (styleArray.Any(a => a.Equals((Word.WdBuiltinStyle)paragraph.Range.get_Style())))
    {
      paragraph.Range.Font.Size = size;
      paragraph.Range.Font.Name = font;
    }
  }

Но там написано, что я не могу читать, и я чувствую, что это неочень хороший способ сделать это.

Это также не работает с

if (styleArray.Contains(paragraph.Range.get_Style()))

Любая помощь по этому вопросу, пожалуйста?

1 Ответ

0 голосов
/ 05 декабря 2018

Существует разница между встроенным перечислением стилей и фактическим стилем.Вот почему сравнение не работает.Массив должен быть массивом стилей .Например:

Word.Document doc = Globals.ThisAddin.Application.ActiveDocument;
enter code here
Word.Style[] styleArray = {
  doc.Styles(Word.WdBuiltinStyle.wdStyleHeading1),
  doc.Styles(Word.WdBuiltinStyle.wdStyleHeading2),
  doc.Styles(Word.WdBuiltinStyle.wdStyleHeading3) //and so on
};
...