1

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

对解决方案有帮助吗?

4

2 回答 2

2

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

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

于 2010-07-22T23:21:06.680 回答
0

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

  var originalClbData = Clipboard.GetDataObject(); 
  Clipboard.SetText(newText);
  txtMailBody.SelectAll();
  txtMailBody.Paste();
  if (originalClbData != null) Clipboard.SetDataObject(originalClbData);
于 2010-09-21T19:12:41.517 回答