代码之家  ›  专栏  ›  技术社区  ›  NakedBrunch

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

  •  3
  • NakedBrunch  · 技术社区  · 16 年前

    我正在用vsto开发Word 2007文档模板。该文档有多个richtextContentControls,其中有一个可见的actionspane和一个treeview控件,其中treeview的节点是richtextContentControls的名称。

    用户可以通过将节点拖放到TreeView中的新位置来重新排序节点。删除节点时,应根据新节点位置重新排序相应的richtextContentControls。

    我可以找到新控件应该移动到的控件的范围。现在我只需要找到一种简单的方法…将控件移动到这个新位置。

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

    1 回复  |  直到 12 年前
        1
  •  4
  •   Todd Main    15 年前

    我在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”属性),然后在树视图中移动它们时,使用索引从其他索引中添加/减去,然后在一个循环中使用“relocate”方法多次将其转到新位置。然后可以循环并重新创建索引。 Application.ScreenUpdating = False 在循环开始时,将其设置回 = True 在循环结束时,也会停止闪烁。