VSTO Word 2007: ¿Cómo se puede mover programáticamente un control por encima / por debajo del rango de un control existente?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Estoy desarrollando una plantilla de documento de Word 2007 con VSTO. El documento tiene varios RichTextContentControls y hay un ActionsPane visible con un control de vista de árbol donde los nodos de la vista de árbol son los nombres de RichTextContentControls.

Los usuarios pueden reordenar nodos arrastrando / soltando nodos a nuevas ubicaciones en la vista de árbol. A medida que se eliminan los nodos, los RichTextContentControls correspondientes se deben volver a ordenar de acuerdo con las nuevas ubicaciones de los nodos.

Puedo encontrar el Rango del control sobre el que se supone que se mueve el nuevo control. Ahora solo necesito encontrar una manera de simplemente ... mover el control a esta nueva ubicación.

¿Cómo puedo mover un control por encima / debajo de un rango?

¿Fue útil?

Solución

Hice esto con un marcador dentro de un RichTextControl para moverlo arriba / abajo de otro desde dos botones en el panel de acciones. Así para subir donde '' bm '' a continuación es igual al marcador seleccionado:

Dim pageBookmark As Microsoft.Office.Tools.Word.Bookmark
pageBookmark = Globals.ThisDocument.Controls.Item(bm)
pageBookmark.Range.Relocate(Direction:=Word.WdRelocate.wdRelocateUp)

Para una vista de árbol, sería más complejo, pero podría ver que desea que todos sus controles de texto enriquecido se indexen (tal vez use la propiedad '' etiqueta '') y luego a medida que los mueva en su vista de árbol, use el índice para sumar / restar de otros índices y luego use la opción "Reubicar" método en un bucle que muchas veces para llegar a su nueva ubicación. Luego puede repetir y volver a crear el índice. Application.ScreenUpdating = False al comienzo de los bucles y vuelva a configurarlo en = True al final del bucle también detendría el parpadeo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top