gpt4 book ai didi

c# - 在另一个 ContentControl 之后插入一个 ContentControl

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:53 26 4
gpt4 key购买 nike

在我们的 VSTO Word 2010 插件中,我们试图在给定的其他 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;
}

效果很好,除非我们要插入的控件之前的控件末尾有一个空段落。如果是这种情况,则将新的 ContentControl 插入到最后一个控件中。

我们如何避免这种情况?

最佳答案

回答有点晚了,但这就是我处理这个案例的方法:

我认为这基本上就是您所做的,但我插入了一个段落,然后以段落为单位移动到。似乎适用于我的情况。

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());

关于c# - 在另一个 ContentControl 之后插入一个 ContentControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2735829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com