VSTO Word 2007:如何以编程方式将控件移动到现有控件的范围之上/之下?

时间:2009-04-29 18:56:21

标签: ms-word vsto

我正在使用VSTO开发Word 2007文档模板。该文档有几个RichTextContentControls,并且有一个带有treeview控件的可见ActionsPane,其中treeview的节点是RichTextContentControls的名称。

用户可以通过将节点拖放到树视图中的新位置来重新排序节点。删除节点后,应根据新节点位置重新排序相应的RichTextContentControl。

我能够找到新控件应该在其上方移动的控件的范围。现在我只需要找到一种简单的方法......将控件移动到这个新位置。

如何将控件移动到范围之上/之下?

1 个答案:

答案 0 :(得分:4)

我使用RichTextControl中的书签将其从动作窗格中的两个按钮移动到另一个上方/下方。像这样向上移动,其中“bm”等于所选书签:

Dim pageBookmark As Microsoft.Office.Tools.Word.Bookmark
pageBookmark = Globals.ThisDocument.Controls.Item(bm)
pageBookmark.Range.Relocate(Direction:=Word.WdRelocate.wdRelocateUp)

对于树视图,它会更复杂,但我可以看到你希望所有的richtext控件都被编入索引(可能使用“tag”属性),然后当你在树视图中移动它们时,使用从其他索引添加/减去的索引,然后在循环中使用“重定位”方法多次将其放到新的位置。然后,您可以循环并重新创建索引。在循环开始时Application.ScreenUpdating = False并在循环结束时将其设置回= True也会停止闪烁。