【问题标题】:System.Windows.Forms.RichTextBox's implementation of TextBoxBase.ClearUndo()System.Windows.Forms.RichTextBox 对 TextBoxBase.ClearUndo() 的实现
【发布时间】:2013-01-05 12:00:13
【问题描述】:

根据MSDN,方法ClearUndo的描述为:

"Clears information about the most recent operation from the undo buffer of the text box."

现在,与文档所说的相反,System.Windows.Forms.RichTextBox 中此方法的覆盖似乎正在清除整个撤消缓冲区,而不仅仅是最近的操作。文档和实现之间的这种差异是一个已知问题,还是我应该怀疑它有什么问题?我一直无法找到任何官方信息,这就是为什么我现在在这里提出这个问题。我已经用.NET Framework 4.0 测试过了。

【问题讨论】:

  • here 读取.NET 4 源代码会推断它不会覆盖TextBoxBase 的ClearUndo()?

标签: c# winforms richtextbox undo


【解决方案1】:

你是对的。 ILSpy 在TextBoxBase 中显示了这一点(RichTextBox 不会覆盖它):

public void ClearUndo()
{
    if (base.IsHandleCreated)
    {
        base.SendMessage(205, 0, 0);
    }
}

消息205是EM_EMPTYUNDOBUFFER

// Header file
#define EM_EMPTYUNDOBUFFER 0x00CD // 0x00CD = 205

// C#
EM_EMPTYUNDOBUFFER = 205

【讨论】:

  • 谢谢!所以更糟糕的是,我认为他们可能忘记更新RichTextBox的文档。
  • 看来他们对“最新”的定义就是一切......如果您进一步阅读文档,他们所说的是正确的。然而,最初的阅读确实使它非常具有误导性,所以我可以看到你的困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 2011-07-24
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多