から継承するクラスがあり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
ます...これですべてです。では、なぜ私のサイズ変更メソッドがばかげた回数(〜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(ref System.Windows.Forms.Message m = {System.Windows.Forms.Message})+0x481バイト
その間e.NewRectangle.Height
、Width
値は無意味なパターンで上下します。最終的な高さと幅は最大値ではありません。イベントの発砲についてはあまり気にしません。この方法を修正して、末尾に空白を追加せずにサイズを計算するにはどうすればよいですか?
Text
Getofプロパティはを返すことに注意してくださいsome words \t \n
。ご覧のとおり、空白を説明するための300の改行などはありません。