RichTextBox中的撤消不会撤消粘贴文本

时间:2010-07-22 23:04:16

标签: c# winforms richtextbox copy-paste undo

我有一个WinForms RichTextBox,默认情况下Undo适用于大多数事情,但是当我粘贴一些文本时(我已经删除了格式化它只是纯文本),并尝试撤消它不会撤消刚刚粘贴的文本

对解决方案有何帮助?

2 个答案:

答案 0 :(得分:2)

按照设计,TextChanged事件不会触发创建撤消状态。粘贴会触发TextChanged事件,这就是发生这种情况的原因。为了解决它,

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

答案 1 :(得分:0)

您可以使用剪贴板,而不是显式替换文本。这不会清除undo-stack

  var originalClbData = Clipboard.GetDataObject(); 
  Clipboard.SetText(newText);
  txtMailBody.SelectAll();
  txtMailBody.Paste();
  if (originalClbData != null) Clipboard.SetDataObject(originalClbData);