texto sirve secciones repeticion que pulse para haga formularios formulario escribir enriquecido cuadro crear control contenido como clic aquĆ­ c# winforms

c# - sirve - texto enriquecido outlook



Relleno de cuadro de texto enriquecido entre texto y borde (8)

¿Es posible agregar relleno en un control de Cuadro de texto enriquecido entre el texto y el borde?

Intenté acoplar un rico cuadro de texto dentro de un panel, con su relleno para los cuatro lados configurado a 10 y eso logró lo que quería. Excepto una vez que se necesita la barra de desplazamiento vertical para el cuadro de texto enriquecido que también se rellena.


¿Quizás estás buscando sangrar texto? Como sangría izquierda y derecha? Si es así, entonces podría usar los métodos ReGEtIndent y ReSetIndent del objeto rtf.

Aquí lo que hago:

//first I find the length of the active window nLen := REGEtIndent( ::oActive:hWnd ) //now resetIndents of the rtf control RESetIndent( ::oActive:hWnd, nLen[ 1 ] + 100, nLen[ 2 ] + 100, -25 )

Espero que ayude.



El RichTextBox no tiene propiedad de relleno.

Se puede lograr un relleno rápido y sucio colocando el RichTextBox en un Panel , que tiene la misma propiedad de BackColor que el RichTextBox (generalmente Color.White ).

Luego, establezca la propiedad Dock de RichTextBox en Fill y juegue con las propiedades de Padding del control Panel.


Establezca el relleno a la derecha en 0 y, a continuación, establezca el margen derecho de RichTextBox en 10. No se ha probado, pero debería funcionar.


Hay EM_GETRECT y EM_SETRECT .

Combinando esos dos juntos, puedes hacer esto:

…se parece a esto:

He escrito una pequeña clase de extensión C # para resumir todo esto.

Ejemplo de uso:

const int dist = 24; richTextBox1.SetInnerMargins(dist, dist, dist, 0);

Esto establece los márgenes internos a la izquierda, arriba y derecha a 24, dejando la parte inferior como cero.

Tenga en cuenta que cuando se desplaza, el margen superior permanece como se establece, dando algo como esto:

Personalmente, esto me parece "antinatural". Preferiría que al desplazar el margen superior también se vuelva cero.

Tal vez hay una solución para eso ...

Código fuente completo

A petición:

public static class RichTextBoxExtensions { public static void SetInnerMargins(this TextBoxBase textBox, int left, int top, int right, int bottom) { var rect = textBox.GetFormattingRect(); var newRect = new Rectangle(left, top, rect.Width - left - right, rect.Height - top - bottom); textBox.SetFormattingRect(newRect); } [StructLayout(LayoutKind.Sequential)] private struct RECT { public readonly int Left; public readonly int Top; public readonly int Right; public readonly int Bottom; private RECT(int left, int top, int right, int bottom) { Left = left; Top = top; Right = right; Bottom = bottom; } public RECT(Rectangle r) : this(r.Left, r.Top, r.Right, r.Bottom) { } } [DllImport(@"User32.dll", EntryPoint = @"SendMessage", CharSet = CharSet.Auto)] private static extern int SendMessageRefRect(IntPtr hWnd, uint msg, int wParam, ref RECT rect); [DllImport(@"user32.dll", EntryPoint = @"SendMessage", CharSet = CharSet.Auto)] private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, ref Rectangle lParam); private const int EmGetrect = 0xB2; private const int EmSetrect = 0xB3; private static void SetFormattingRect(this TextBoxBase textbox, Rectangle rect) { var rc = new RECT(rect); SendMessageRefRect(textbox.Handle, EmSetrect, 0, ref rc); } private static Rectangle GetFormattingRect(this TextBoxBase textbox) { var rect = new Rectangle(); SendMessage(textbox.Handle, EmGetrect, (IntPtr) 0, ref rect); return rect; } }


Tal vez esto es lo que necesitas?

richTextBox.SelectionIndent += 20;


Tuve el mismo problema y la respuesta descrita no me ayudó, esto me funcionó, así que la compartiré si ayuda.

richTextBox1.SelectAll(); richTextBox1.SelectionIndent += 15;//play with this values to match yours richTextBox1.SelectionRightIndent += 15;//this too richTextBox1.SelectionLength = 0; //this is a little hack because without this //i''ve got the first line of my richTB selected anyway. richTextBox1.SelectionBackColor = richTextBox1.BackColor;


Una forma rápida y fácil es desplazar el texto del desplazamiento vertical, llamando a este método de ejemplo en la carga de formularios y en los eventos de cambio de tamaño de forma / control:

private void AdjustTextBoxRMargin() { richTextBox1.RightMargin = richTextBox1.Size.Width - 35; }

El valor de 35 parece funcionar para Win7, pero puede diferir en otras versiones de Windows.