我有一个 WinForms RichTextBox 并且默认情况下撤消适用于大多数事情,但是当我粘贴一些文本时(我已经剥离了它的格式,它只是纯文本),并尝试撤消它不会撤消刚刚粘贴的文本。
对解决方案有帮助吗?
我有一个 WinForms RichTextBox 并且默认情况下撤消适用于大多数事情,但是当我粘贴一些文本时(我已经剥离了它的格式,它只是纯文本),并尝试撤消它不会撤消刚刚粘贴的文本。
对解决方案有帮助吗?
按照设计,TextChanged
事件不会触发 Undo 状态的创建。粘贴会触发TextChanged
事件,这就是发生这种情况的原因。为了绕过它,
我建议将事件处理程序绑定到TextChanged
调用事件的KeyUp
事件。KeyUp 事件确实会触发 Undo 状态创建的创建。
您可以使用剪贴板,而不是显式替换文本。这不会清除撤消堆栈
var originalClbData = Clipboard.GetDataObject();
Clipboard.SetText(newText);
txtMailBody.SelectAll();
txtMailBody.Paste();
if (originalClbData != null) Clipboard.SetDataObject(originalClbData);