2010-04-29 37 views
1

在我們的VSTO Word 2010插件中,我們試圖在給定的其他ContentControl之後插入RichTextControl。我們試過這個:在另一個ContentControl之後插入ContentControl

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; 
    } 

它工作正常,除非在我們想要插入的控件之前有一個空段落。如果是這種情況,則新的ContentControl被插入到最後一個控件中。

我們該如何避免這種情況?

回答

5

有點晚了一個答案,但是這是我做過什麼來處理這種情況:

我覺得它基本上是你做了什麼,但我插入一個段落,然後一個段落單位移動到。似乎在我的情況下工作。

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()); 
相關問題