ВСТО Word 2007:Как можно программно переместить элемент управления выше/ниже диапазона существующего элемента управления?

StackOverflow https://stackoverflow.com/questions/803743

  •  03-07-2019
  •  | 
  •  

Вопрос

Я разрабатываю шаблон документа Word 2007 с помощью VSTO.В документе есть несколько элементов управления RichTextContentControl, а также видимая панель ActionsPane с элементом управления древовидным представлением, где узлами древовидного представления являются имена элементов управления RichTextContentControls.

Пользователи могут изменять порядок узлов, перетаскивая узлы в новые места в древовидной структуре.При удалении узлов соответствующие RichTextContentControls должны быть переупорядочены в соответствии с расположением новых узлов.

Я могу найти диапазон элемента управления, над которым должен быть перемещен новый элемент управления.Теперь мне нужно только найти способ просто... переместить элемент управления в это новое место.

Как я могу переместить элемент управления выше/ниже диапазона?

Это было полезно?

Решение

Я сделал это с помощью закладки внутри 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 в конце цикла также остановится мерцание.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top