VSTO Word 2007:如何以编程方式将控件移动到现有控件的范围之上/之下?
题
我正在使用VSTO开发Word 2007文档模板。该文档有几个RichTextContentControls,并且有一个带有treeview控件的可见ActionsPane,其中treeview的节点是RichTextContentControls的名称。
用户可以通过将节点拖放到树视图中的新位置来重新排序节点。删除节点后,应根据新节点位置重新排序相应的RichTextContentControl。
我能够找到新控件应该在其上方移动的控件的范围。现在我只需要找到一种简单的方法......将控件移动到这个新位置。
如何将控件移动到范围之上/之下?
解决方案
我使用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
也会停止闪烁。
不隶属于 StackOverflow