我有一个WinForms RichTextBox,默认情况下Undo适用于大多数事情,但是当我粘贴一些文本时(我已经删除了格式化它只是纯文本),并尝试撤消它不会撤消刚刚粘贴的文本
对解决方案有何帮助?
答案 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);