我正在使用 VSTO 开发 Word 2007 文档模板。该文档有多个 RichTextContentControls,并且有一个带有 TreeView 控件的可见 ActionsPane,其中 TreeView 的节点是 RichTextContentControls 的名称。
用户可以通过将节点拖/放到 TreeView 中的新位置来重新排序节点。当节点被删除时,相应的 RichTextContentControls 应根据新的节点位置重新排序。
我能够找到新控件应该移到其上方的控件的范围。现在我只需要找到一种方法来简单地...将控件移动到这个新位置。
如何将控件移至某个范围之上/之下?
最佳答案
我使用 RichTextControl 内的书签来完成此操作,只需将其从操作 Pane 中的两个按钮移动到另一个按钮的上方/下方。像这样向上移动,其中下面的“bm”等于所选书签:
Dim pageBookmark As Microsoft.Office.Tools.Word.Bookmark
pageBookmark = Globals.ThisDocument.Controls.Item(bm)
pageBookmark.Range.Relocate(Direction:=Word.WdRelocate.wdRelocateUp)
对于 TreeView ,它会更复杂,但我可以看到您希望对所有富文本控件进行索引(也许使用“标签”属性),然后当您在 TreeView 中移动它们时,使用索引从其他索引中添加/减去,然后在循环中多次使用“重新定位”方法将其到达新位置。然后您可以循环并重新创建索引。在循环开始时设置 Application.ScreenUpdating = False
并在循环结束时将其设置回 = True
也会停止闪烁。
关于ms-word - VSTO字2007 : How can a control be programmatically moved above/below the range of an existing control?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/803743/