2012-04-26 10 views
5

Quiero mover el contenido de un RichTextBox a una línea específica del contenido. El RichTextBox proporciona el método ScrollToVerticalOffset del ScrollViewer incrustado. El método está documentado en MSDN, pero la unidad de medida del parámetro denominada offset no es specified. El tipo es double.Calcular desplazamiento para ScrollToVerticalOffset desde el número de línea en un WPF RichTextBox

A VerticalOffset propiedad de un TextBox está documentada como en unidades independientes del dispositivo (1/96th inch por unidad).

Así que traté de calcular el desplazamiento desde el tamaño de la fuente. El tamaño de la fuente se da en píxeles. La fórmula resultante es

offset = fontSize * 96/72 * lineNumber; 

Pero esto salta muy por detrás de la línea deseada. Por ahora estoy usando este cálculo:

offset = fontSize * lineNumber; 

¿Es esto correcto?

Respuesta

2

Es cierto que pasa mucho tiempo desde que se hizo esta pregunta, pero aún no se ha encontrado la respuesta correcta.

que utiliza este código ahora, eso es bueno para mí realmente:

var offset = (lineNumber * (fontSize + 2)) - richTextBox.ActualHeight/2; 
richTextBox.ScrollToVerticalOffset(offset); 

Si conoces a una solución mejor que de esta manera, por favor, ayúdame.

+0

Tu cálculo me parece bien. Pero no puedo validar el cálculo en este momento. – Christian

Cuestiones relacionadas