RichTextBox 在调整大小时不滚动属性并显示额外的空白

问题描述 投票:0回答:0

RichTextBox 控件似乎有这个奇怪的错误,我正试图找到解决它的方法。

假设您有一个 RichTextBox 控件,其中包含足够的文本来显示垂直滚动条。然后,在滚动到底部时增加 RichTextBox 的高度(但不足以隐藏滚动条)。此时,RichTextBox 将只显示以前在较小尺寸上可见的文本量,并在文本下方添加一个额外的空白。如果您尝试向下(或向上)滚动一点点,它会立即正确地重新绘制自己。这就是这两种情况下的样子:

调整后 尝试滚动后

这里有一个完整的例子来演示这个问题:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        var rtb = new RichTextBox();
        rtb.Location = new Point(12, 12);
        rtb.Size = new Size(150, 100);
        rtb.Lines = Enumerable.Range(1, 20).Select(i => $"Line {i:00}").ToArray();
        rtb.SelectionStart = rtb.TextLength;
        rtb.ScrollToCaret();
        this.Controls.Add(rtb);

        var btn = new Button { Text = "Resize", AutoSize = true };
        btn.Location = new Point(rtb.Right + rtb.Margin.Right + btn.Margin.Left, 3);
        this.Controls.Add(btn);
        btn.Click += (o, e) => rtb.Height = rtb.Height == 100 ? 200 : 100;
    }
}

这是在行动:

我尝试在

rtb.ScrollToCaret();
事件处理程序中调用
SizeChanged
,这似乎是一个不错的解决方法,但最终随机导致了一些其他奇怪的故障。我试着看看
rtb.Refresh();
rtb.Invalidate();
rtb.PerformLayout();
是否有任何帮助,但都没有用。

还有其他方法可以解决这个问题吗?

注意:TextBox 控件 not 遇到同样的问题;只有 RichTextBox.

c# winforms scrollbar richtextbox
© www.soinside.com 2019 - 2024. All rights reserved.