我有一个继承自RichTextBox
. 我覆盖调整大小
protected override void OnContentsResized(ContentsResizedEventArgs e)
{
this.Width = e.NewRectangle.Width;
this.Height = e.NewRectangle.Height;
this.Width += this.Margin.Horizontal + SystemInformation.HorizontalResizeBorderThickness;/*+ SystemInformation.HorizontalScrollBarThumbWidth Use if ScrollBars are visible */
base.OnContentsResized(e);
}
这行得通……有点。此方法在底部创建大量空白(大约 2 * 真实内容)。此方法从 中多次调用[External Code]
。这是一个基本的单元测试,我把它贴RichTextBox
在 a 上Form
并设置Rtf
……就是这样。那么为什么我的调整大小方法被称为荒谬的 # 次(~30 倍)?
调用堆栈
BHCS.ECC.dll!PhysDoc.Plugins.BayRichTextBox.OnContentsResized(System.Windows.Forms.ContentsResizedEventArgs e = {System.Windows.Forms.ContentsResizedEventArgs}) Line 74 + 0x42 bytes C#
[External Code]
BHCS.ECC.dll!PhysDoc.Plugins.BayRichTextBox.OnContentsResized(System.Windows.Forms.ContentsResizedEventArgs e = {System.Windows.Forms.ContentsResizedEventArgs}) Line 74 + 0x42 bytes C#
[External Code]
BHCS.ECC.dll!PhysDoc.Plugins.BayRichTextBox.OnContentsResized(System.Windows.Forms.ContentsResizedEventArgs e = {System.Windows.Forms.ContentsResizedEventArgs}) Line 74 + 0x42 bytes C#
[External Code]
BHCS.ECC.dll!PhysDoc.Plugins.BayRichTextBox.OnContentsResized(System.Windows.Forms.ContentsResizedEventArgs e = {System.Windows.Forms.ContentsResizedEventArgs}) Line 74 + 0x42 bytes C#
[External Code]
BHCS.ECC.UnitTests.dll!BHCS.ECC.UnitTests.LibUI_Tests.RTFTests.RtfTestClass.ProductionLabTest() Line 63 + 0x2c bytes C#
[External Code]
当我展示外部代码时,发生了很多事情。外部代码中对堆栈的先前调用是
System.Windows.Forms.dll!System.Windows.Forms.RichTextBox.WmReflectNotify(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message}) + 0x481 字节
所有的时间e.NewRectangle.Height
和Width
价值都在无意义的模式中上升和下降。最终的高度和宽度不是最大值。我不太关心事件触发。如何修复此方法以计算大小而不在末尾添加空格?
请注意,Text
属性的 Get 返回some words \t \n
。如您所见,没有 300 个换行符或任何内容来说明空白。