我有一个继承自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
放在Form
并设置Rtf
......这就是所有。那么为什么我的resize方法被称为荒谬的#次(~30x)?
调用堆栈
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(参照 System.Windows.Forms.Message m = {System.Windows.Forms.Message})+ 0x481字节
所有e.NewRectangle.Height
和Width
值都会以无意义的方式上下移动。最终的高度和宽度不是最大值。我不太关心事件的发射。如何在不向末尾添加空格的情况下修复此方法来计算大小?
请注意,Get Text
属性返回some words \t \n
。正如您所看到的,白色空间没有300个换行符或任何内容。