2008-09-30 6 views
13

¿Hay alguna manera de cambiar el tamaño de pestañas predeterminado en .NET RichTextBox? Actualmente parece estar configurado en el equivalente a 8 espacios, que es un poco grande para mi gusto.Modificación del tamaño de pestañas predeterminado en RichTextBox

Editar: Para aclarar, quiero configurar el valor predeterminado global de "\ t" como 4 espacios para el control. Por lo que puedo entender, la propiedad SelectionTabs requiere que seleccione todo el texto primero y luego el ancho de las pestañas a través de la matriz. Haré esto si es necesario, pero preferiría simplemente cambiar el valor predeterminado global una vez, si es posible, para que no tenga que hacer eso cada vez.

Respuesta

16

Puede establecerlo configurando la propiedad SelectionTabs.

private void Form1_Load(object sender, EventArgs e) 
{ 
    richTextBox1.SelectionTabs = new int[] { 100, 200, 300, 400 }; 
} 

ACTUALIZACIÓN:
importa .... La secuencia

Si define las pestañas antes del texto del control está inicializando, entonces usted no tiene que seleccionar el texto antes de fijar las pestañas .

Por ejemplo, en el código anterior, esto mantendrá el texto con la ficha original de 8 plazas de paradas:

richTextBox1.Text = "\t1\t2\t3\t4"; 
richTextBox1.SelectionTabs = new int[] { 100, 200, 300, 400 }; 

pero esto va a usar los nuevos:

richTextBox1.SelectionTabs = new int[] { 100, 200, 300, 400 }; 
richTextBox1.Text = "\t1\t2\t3\t4"; 
+3

Puede ser útil agregar que estos valores son la tabulación * en píxeles * en lugar de caracteres. Se menciona en la [página de MSDN] (http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.selectiontabs.aspx) pero parece un poco contraintuitivo. – JYelton

1

Winforms doesn' t tiene una propiedad para establecer el tamaño de pestañas predeterminado de un RichTexBox con un solo número, pero si está preparado para profundizar en el Rtf del cuadro de texto enriquecido y modificarlo, hay una configuración que puede usar llamada: "\ deftab ". El número después indica el número de twips (1 punto = 1/72 pulgada = 20 twips). El RTF resultante con el tamaño de la pestaña estándar de 720 twips podría ser algo como:

{\rtf1\ansi\ansicpg1252\deff0\deflang2057\deftab720{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}} 
\viewkind4\uc1\pard\f0\fs41 
1\tab 2\tab 3\tab 4\tab 5\par 
} 

Si usted necesita para convertir twips en píxeles, utilice el código inspirado de Convert Pixels to Points:

int tabSize=720; 
Graphics g = this.CreateGraphics(); 
int pixels = (int)Math.Round(((double)tabSize)/1440.0 * g.DpiX); 
g.Dispose(); 
0

Si usted tiene una Cuadro RTF que solo se usa para mostrar (solo lectura) texto de tono fijo, lo más fácil sería no perder el tiempo con las pestañas. Simplemente reemplázalos con espacios.

Si desea que el usuario pueda ingresar algo y usar esa tecla Tab para avanzar, también puede capturar la tecla Tab al anular OnKeyDown() e imprimir espacios.

+0

A menos que tenga espacios de 14pt, espacios en negrita o espacios formateados. –

+0

Tienes razón. Olvidé mencionar que esto tiene mucho sentido para los editores de código que usan 'Courier New' y solo un tamaño de letra. En 'Courier New', un espacio en negrita tiene el mismo ancho que un espacio normal. Pero si usa fuentes de paso variable o diferentes tamaños de fuente, no sería una buena idea reemplazar las pestañas con espacios. – Elmue

Cuestiones relacionadas