VSTO Word несколько строк в управлении контентом - PullRequest
0 голосов
/ 03 января 2019

Возможно ли как-то добавить управление контентом для нескольких строк?

В настоящее время я добавляю такой контент-контроль:

bm = doc.Bookmarks.Add("bookmark", app.Selection.Range);
ContentControl cc = doc.ContentControls.Add(WdContentControlType.wdContentControlRichText, bm.Range);
cc.MultiLine = true;
cc.Tag = _BOOKMARK;

Но я всегда получаю ComException, когда выбираю / отмечаю несколько строк в слове и пытаюсь добавить для них элемент управления контентом. Разрешено или возможно это сделать?

1 Ответ

0 голосов
/ 03 января 2019

Вставка элемента управления контентом "вокруг" строк текста, уже находящихся в документе, насколько я знаю, не работает.

Вместо этого назначьте несколько строк объекту Range.Вставьте элемент управления содержимым, затем используйте свойство Range.FormattedText, чтобы «скопировать» в него эти строки.В обратном направлении удалите Range.Примерно так (набрано у меня на голове, когда я на мобильном устройстве)

Word.Range rngSel = app.Selection.Range;
bm = doc.Bookmarks.Add("bookmark", rngSel);
Word.Range rngCC = rngSel.Duplicate;
//Insert the content control immediately after the selection, for example
rngCC.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
ContentControl cc = doc.ContentControls.Add(WdContentControlType.wdContentControlRichText, rngCC);
cc.MultiLine = true;
cc.Tag = _BOOKMARK;
cc.Range.FormattedText = rngSel.FormattedText;
RngSel.Delete();
...