ВСТО Word 2007:Как можно программно переместить элемент управления выше/ниже диапазона существующего элемента управления?
Вопрос
Я разрабатываю шаблон документа 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
в конце цикла также остановится мерцание.