Cómo permitir el pegar solo texto sin formato dentro de un RichTextBox en tu aplicación C# WinForms

Cómo permitir el pegar solo texto sin formato dentro de un RichTextBox en tu aplicación C# WinForms

De forma predeterminada, ningún cuadro de texto enriquecido permite pegar texto mediante arrastrar y soltar, por lo que la única forma en que el usuario tendrá que agregar contenido externo a su aplicación es a través de CTRLV. Entonces, la solución en nuestro caso será simplemente alterando el comportamiento predeterminado de este evento, en lugar de pegar el texto con formato, simplemente extraeremos el texto sin formato y lo agregaremos al cuadro de texto enriquecido.

1. Agregar evento KeyDown

Como primer paso, deberá adjuntar un nuevo detector de eventos a su cuadro de texto enriquecido existente. El detector de eventos reaccionará al evento KeyDown, puede agregarlo a través de la pestaña de eventos de la caja de herramientas:

KeyDown Event Richtextbox C# WinForms

Esto creará el siguiente método en su clase de formulario:

private void RichTextBox1_KeyDown(object sender, KeyEventArgs e)
{

}

En el siguiente paso, le explicaremos cómo manejar el evento.

2. Gestionar evento de pegado

Dentro del detector de eventos KeyDown, deberá verificar si las combinaciones de teclas actuales de las teclas presionadas corresponden a la de Pegar. Si la condición pasa, simplemente tendrá que concatenar al texto actual del cuadro de texto enriquecido con el texto del portapapeles. El Portapapeles ofrece una forma de obtener el texto como texto sin formato fácilmente:

private void RichTextBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Control && e.KeyCode == Keys.V)
    {
        richTextBox1.Text += (string) Clipboard.GetData("Text");
        e.Handled = true;
    }
}

Finalmente, marca el evento como Manejado y listo.

Ejemplo de formulario

El siguiente ejemplo, que incluye toda la clase del formulario, muestra cómo se debe adjuntar el evento a su formulario:

using System;
 
using System.Windows.Forms; 

namespace Sandbox
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void RichTextBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.V)
            {
                richTextBox1.Text += (string) Clipboard.GetData("Text");
                e.Handled = true;
            }
        }
    }
}

Que te diviertas ❤️!

Esto podria interesarte

Conviertete en un programador más sociable