C# System.Windows.Forms.RichTextBox';s TextBoxBase.ClearUndo()的实现

C# System.Windows.Forms.RichTextBox';s TextBoxBase.ClearUndo()的实现,c#,winforms,richtextbox,undo,C#,Winforms,Richtextbox,Undo,根据,方法ClearUndo的描述如下: "Clears information about the most recent operation from the undo buffer of the text box." 现在,与文档所述相反,在System.Windows.Forms.RichTextBox中重写此方法似乎是清除整个撤消缓冲区,而不仅仅是最近的操作。文档和实现之间的这种差异是一个已知的问题,还是我应该怀疑它出了什么问题?我一直找不到有关这方面的任何官方信息,这就是为什么我现

根据,方法
ClearUndo
的描述如下:

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

现在,与文档所述相反,在
System.Windows.Forms.RichTextBox
中重写此方法似乎是清除整个撤消缓冲区,而不仅仅是最近的操作。文档和实现之间的这种差异是一个已知的问题,还是我应该怀疑它出了什么问题?我一直找不到有关这方面的任何官方信息,这就是为什么我现在在这里提出这个问题。我已经用
.netframework4.0
对它进行了测试,你是对的。ILSpy在
TextBoxBase
中显示这一点(
RichTextBox
不会覆盖它):

消息205是EM_EMPTYUNDOBUFFER:

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

// C#
EM_EMPTYUNDOBUFFER = 205

从中读取.NET 4源代码可以推断它不会覆盖TextBoxBase的
ClearUndo()
?谢谢!因此,更糟糕的是,我认为他们可能忘记了更新
RichTextBox
的文档。他们对“最近”的定义似乎就是一切。。如果您进一步阅读文档,他们所说的是正确的。然而,最初的阅读确实让人产生误解,所以我可以看出你的困惑。
// Header file
#define EM_EMPTYUNDOBUFFER 0x00CD // 0x00CD = 205

// C#
EM_EMPTYUNDOBUFFER = 205