Я создаю надстройку MS-Word для компании, где я занимаюсь своей стажировкой.VSTO Word Add-In: Content Control Nesting
Я уже создал новую ленту с большим количеством SplitButtons
и Buttons
. Теперь, что я хочу сделать, это когда вы нажимаете одну из кнопок, элемент управления содержимым будет добавлен к слову doc. Это прекрасно работает для контроля контента Plain. Эти элементы управления содержимым имеют такие метки, как «sport/basketball/player/name», которые привязаны к элементу в XML-файле.
private void addSimpleContentControl(String tag, String placeholder)
{
try
{
contentControlPlain = Globals.ThisAddIn.Application.ActiveDocument.ContentControls.Add(Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlText);
contentControlPlain.Tag = tag;
contentControlPlain.SetPlaceholderText(null, null, placeholder);
}
catch (COMException) { }
}
Теперь давайте поговорим о моей проблеме. Некоторые из моих элементов могут присутствовать более одного раза. Поэтому я хочу создать элемент управления Rich Content, который содержит более одного элемента управления контентом Plain.
Так что у меня есть SplitButton
«игрок» с кнопками типа «имя», «номер трикотажа», «позиция», ..... Когда одна из основных кнопок нажата, сначала проверьте, с определенным именем уже существует. Если это не так, я сделаю один и добавлю к нему один простой элемент управления контентом.
Богатое содержание управления-> обычный контроль текст -> конец Rich контроль содержания
До сих пор так хорошо, это все идет хорошо, но с того момента, я хочу добавить еще один простой контроль содержания богатому контроль содержания этого выскакивает:
«текст управления Plain не могут быть вставлены вокруг других элементов управления или XML-элементы»
вот мой код, чтобы добавить простой контроль содержания богатому контроль содержания.
private void addContentControlToRich(String tag, String placeholder,String title)
{
Microsoft.Office.Interop.Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
foreach (Microsoft.Office.Interop.Word.ContentControl cc in doc.ContentControls)
{
if (cc.Title == title && cc.Type == Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
{
try
{
Microsoft.Office.Interop.Word.Range rng = cc.Range;
object oRng = rng;
contentControlPlain = doc.ContentControls.Add(Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlText, ref oRng);
contentControlPlain.Tag = tag;
contentControlPlain.SetPlaceholderText(null, null, placeholder);
contentControlPlain.LockContentControl = true;
break;
}
catch (COMException) { }
}
}
}