C# 在RichTextBox中撤消不会撤消粘贴的文本

C# 在RichTextBox中撤消不会撤消粘贴的文本,c#,winforms,richtextbox,copy-paste,undo,C#,Winforms,Richtextbox,Copy Paste,Undo,我有一个WinForms RichTextBox,默认情况下,撤消操作适用于大多数情况,但当我粘贴一些文本时(我已将其格式去掉,它只是纯文本),并尝试撤消时,它不会撤消刚刚粘贴的文本 解决方案是否有帮助?根据设计,TextChanged事件不会触发撤消状态的创建。粘贴会触发TextChanged事件,这就是为什么会发生这种情况。为了避开它 我建议将事件处理程序绑定到调用KeyUp事件的TextChanged事件。KeyUp事件确实会触发撤消状态创建的创建。您可以使用剪贴板,而不是显式替换文本。这

我有一个WinForms RichTextBox,默认情况下,撤消操作适用于大多数情况,但当我粘贴一些文本时(我已将其格式去掉,它只是纯文本),并尝试撤消时,它不会撤消刚刚粘贴的文本


解决方案是否有帮助?

根据设计,
TextChanged
事件不会触发撤消状态的创建。粘贴会触发
TextChanged
事件,这就是为什么会发生这种情况。为了避开它


我建议将事件处理程序绑定到调用
KeyUp
事件的
TextChanged
事件。KeyUp事件确实会触发撤消状态创建的创建。

您可以使用剪贴板,而不是显式替换文本。这不会清除撤消堆栈

  var originalClbData = Clipboard.GetDataObject(); 
  Clipboard.SetText(newText);
  txtMailBody.SelectAll();
  txtMailBody.Paste();
  if (originalClbData != null) Clipboard.SetDataObject(originalClbData);
我从标题中删除了C#,因为你的问题与C#无关,而且你的标签中已经有C。