RichTextBox

El control RichTextBox tiene una serie de métodos que nos permiten cargar y guardar su contenido desde o hacia un fichero:

  • LoadFile:
  • SaveFile: rtb.SaveFile(dlgGuardar.FileName, RichTextBoxStreamType.PlainText);

Utiliza el formato RTF por defecto pero puede utilizar otro formatos RichTextBoxStreamType.PlainText por ejemplo.

Podemos utilizar la propiedad Text para gestionar el contenido, o bien la propiedad Rtf que permite la utilización de códigos RTF en el texto. Como los códigos RTF son un poco complicados tenemos la posibilidad de formatear el texto con la propiedad SelectionAlignment, SelectionFont, SelectionBackColor y SelectionColor.

Ej:

rtb.SelectionFont = new Font(rtf.SelectionFont, FontStyle.Bold|FontStyle.Underline);
rtb.SelectionBackColor = Color.Beige;
rtb.SelectionColor = Color.Red;
rtb.SelectionAlignment = HorizontalAligment.Center;

También tenemos otros métodos interesantes como el Find.

public int FindMyText(string searchText, int searchStart, int searchEnd)
{
    int returnValue = -1;
    if (searchText.Length > 0 && searchStart >= 0) 
    {
        if (searchEnd > searchStart || searchEnd == -1)
        { int indexToText = richTextBox1.Find(searchText, searchStart, searchEnd, RichTextBoxFinds.MatchCase);
          if(indexToText >= 0)
            { returnValue = indexToText;
            }
        }
    }
    return returnValue;
}

Ejemplo de aplicación editor RTF:

Aplicación RTF

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace TUTORIAL
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void nuevoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se utiliza el metodo clear para limpiar el texto del rich textbox
            editor.Clear();
        }
 
        private void abrirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se crea un objeto de openfiledialogo que nos servira para abrir archivos
            OpenFileDialog Open = new OpenFileDialog();
            System.IO.StreamReader myStreamReader = null;
            //se especifica que tipos de archivos se podran abrir y se verifica si existe
            Open.Filter = "Text [*.txt*]|*.txt|All Files [*,*]|*,*";
            Open.CheckFileExists = true;
            Open.Title = "Abrir Archivo";
            Open.ShowDialog(this);
            try
            {
                //este codigo se utiliza para que se pueda pueda mostrar la informacion del archivo que queremos abrir en el rich textbox
                Open.OpenFile();
                myStreamReader = System.IO.File.OpenText(Open.FileName);
                editor.Text = myStreamReader.ReadToEnd();
 
            }
            catch (Exception) { }
 
        }
 
        private void guardarComoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se crea un objeto de tipo savefiledialog que nos servira para guardar el archivo
            SaveFileDialog Save = new SaveFileDialog();
            System.IO.StreamWriter myStreamWriter = null;
            //al igual que para abrir el tipo de documentos aqui se especifica en que extenciones se puede guardar el archivo
            Save.Filter = "Text (*.txt)|*.txt|HTML(*.html*)|*.html|All files(*.*)|*.*";
            Save.CheckPathExists = true;
            Save.Title = "Guardar como";
            Save.ShowDialog(this);
            try
            {
                //este codigo se utiliza para guardar el archivo de nuestro editor
                myStreamWriter = System.IO.File.AppendText(Save.FileName);
                myStreamWriter.Write(editor.Text);
                myStreamWriter.Flush();
 
            }
            catch (Exception) { }
 
        }
 
        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se utiliza el metodo close para cerrar el formulario
            Close();
        }
 
        private void atrasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se utiliza el metodo undo en el rich textbox para volver atras
            editor.Undo();
        }
 
        private void adelanteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se utiliza el metodo redo en le rich textbox para regresar adelante
            editor.Redo();
        }
 
        private void copiarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se utilza el metodo copy para copiar lo que este seleccionado en el rich textbox
            editor.Copy();
        }
 
        private void pegarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se utilza el metodo paste para pegar lo que tenemos copiado en el rich textbox
            editor.Paste();
        }
 
        private void cortarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se utilza el metodo cut para cortar lo que este seleccionado en el rich textbox
            editor.Cut();
        }
 
        private void seleccionarTodoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se utilza el metodo SellecAll para seleccionar todo lo que este en el rich textbox
            editor.SelectAll();
        }
 
        private void borrarTodoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se utiliza el metodo clear para limpiar el texto del rich textbox
            editor.Clear();
        }
 
        private void fuenteToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            //se crea un objeto de tipo fontdialog que servira para cabiar el tipo de fuente y tamaño
            FontDialog font = new FontDialog();
            //se aplica el tipo de fuente del rich textbox al objeto que hemos creado
            font.Font = editor.Font;
            //se hace la condicion para cambiar el tipo de fuente al presionar el boton ok
            if (font.ShowDialog() == DialogResult.OK)
            {
                editor.Font = font.Font;
            }
 
        }
 
        private void colorDeFuenteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se crea un objeto de tipo colordialog que servira para cabiar color de la fuente 
            ColorDialog color = new ColorDialog();
            //se hace la condicion para cambiar el color de la fuente al presionar el boton ok 
            if (color.ShowDialog() == DialogResult.OK)
            {
                editor.ForeColor = color.Color;
            }
        }
 
        private void colorDeFondoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //se crea un objeto de tipo colordialog que servira para cabiar color del rich textbox
            ColorDialog fondo = new ColorDialog();
            //se hace la condicion para cambiar el tipo de color del rich textbox al presionar el boton ok
            if (fondo.ShowDialog() == DialogResult.OK)
            {
                editor.BackColor = fondo.Color;
            }
        }
    }
}