Предполагается, что WinForms: попробуйте это: определите RichTextBox с обработчиком событий KeyDown следующим образом:
Пример только для добавления:
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.V)
{
richTextBox1.Text += (string)Clipboard.GetData("Text");
e.Handled = true;
}
}
[Редактировать]
Добавление буфера обмена RTF в RichTextBox в текущей точке вставки (начало выбора), например:
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.V)
{
// suspend layout to avoid blinking
richTextBox2.SuspendLayout();
// get insertion point
int insPt = richTextBox2.SelectionStart;
// preserve text from after insertion pont to end of RTF content
string postRTFContent = richTextBox2.Text.Substring(insPt);
// remove the content after the insertion point
richTextBox2.Text = richTextBox2.Text.Substring(0, insPt);
// add the clipboard content and then the preserved postRTF content
richTextBox2.Text += (string)Clipboard.GetData("Text") + postRTFContent;
// adjust the insertion point to just after the inserted text
richTextBox2.SelectionStart = richTextBox2.TextLength - postRTFContent.Length;
// restore layout
richTextBox2.ResumeLayout();
// cancel the paste
e.Handled = true;
}
}
[Конец редактирования]
Примечание 0: вставленный в текст означает , что предполагает использование текущих настроек стиля для RichTextBox: если для цвета ForeGround установлено значение «Синий»: вставленный текст будет находиться в синий.
Примечание 1: Это то, что я быстро собрал вместе, и протестировал только несколько раз, создав несколько разноцветных и странно отформатированных RTF для буфера обмена с помощью WordPad: затем вставил в RichTextBox1 во время выполнения: он удалил все цвета, отступы и т. д.
Поскольку он не полностью протестирован, соблюдайте осторожность.
Примечание 2: Очевидно, что это не относится к случаю «Вставить» или «Вставить через контекстное меню».
Приветствую всех критиков этого ответа, и немедленно снимет его, если он не "на отметке".