【问题标题】:Undo in RichTextBox does not undo Pasted TextRichTextBox 中的撤消不会撤消粘贴的文本
【发布时间】:2011-03-19 20:35:30
【问题描述】:

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

对解决方案有帮助吗?

【问题讨论】:

  • 我从标题中删除了 C#,因为您的问题与 C# 无关,而且您的标签中已经包含 C#。

标签: c# winforms richtextbox copy-paste undo


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-12
      • 2019-09-15
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多