ms-word - VSTO字2007 : How can a control be programmatically moved above/below the range of an existing control?

标签 ms-word vsto

我正在使用 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/

相关文章:

c# - 如何使用 .NET 中的 OpenXML SDK 在 .docx 文件中的特定位置插入元素

vba - 在VBA宏中打开/激活Word文档

C# outlook 2010 加载项安装所有用户不加载

c# - Outlook 加载项不会加载,也不会显示为禁用或不活动,即使创建了正确的注册表也是如此

c# - 从空白启动时 VSTO 功能区不显示解决方案

c# - 如何在邮件中添加 Outlook VSTO 2010 上下文菜单?

c# - 从 VBA 或 C# Interop 获取 Microsoft Word 中的文本位置

c# - 使用 C# ASP.NET 将 Word 文档内容传输到服务器端的 Web 环境

php - 使用 PHP 转换 Microsoft Word 特殊字符

outlook - 如何在 Outlook 资源管理器窗口中为自定义项目设置自定义图标?