Mar*_*oth 1 c# vsto ms-word word-contentcontrol
在我们的VSTO Word 2010 Addin中,我们尝试在给定的其他ContentControl之后插入RichTextControl.我们试过这个:
public ContentControl AddContentControl(WdContentControlType type, int position)
{
Paragraph paragraphBefore = null;
if (position == 0)
{
if (WordDocument.Paragraphs.Count == 0)
{
WordDocument.Paragraphs.Add();
}
paragraphBefore = WordDocument.Paragraphs.First;
}
else
{
paragraphBefore = Controls.ElementAt(position - 1).Range.Paragraphs.Last;
}
object start = paragraphBefore.Range.End;
object end = paragraphBefore.Range.End + 1;
paragraphBefore.Range.InsertParagraphAfter();
Range rangeToUse = WordDocument.Range(ref start, ref end);
ContentControl newControl = _ContentControl = _WordDocument.ContentControls.Add(type, rangeToInsert);
Controls.Insert(position, newControl);
OnNewContentControl(newControl, position);
return newControl.ContentControl;
}
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,除非我们想要插入的控件在结尾处有一个空段落.如果是这种情况,则新的ContentControl将插入到最后一个控件中.
我们怎能避免这种情况?
小智 5
回答有点迟,但这是我处理这种情况所做的:
我认为这基本上就是你所做的,但是我插入了一个段落然后移动到Paragraph单元.似乎在我的情况下工作.
Globals.ThisDocument.Paragraphs.First.Range.Select();
var cc = Globals.ThisDocument.Controls.AddRichTextContentControl(Guid.NewGuid().ToString());
var newRange = cc.Range;
object count = 1;
newRange.Move(Unit: Word.WdUnits.wdParagraph, Count: ref count);
Globals.ThisDocument.Paragraphs.Add();
newRange.Move(Unit: Word.WdUnits.wdParagraph, Count: ref count);
var cc2 = Globals.ThisDocument.Controls.AddRichTextContentControl(newRange, Guid.NewGuid().ToString());
Run Code Online (Sandbox Code Playgroud)