winforms Windows窗体:在RichTextBox中切换较少的文本内容时,如何将滚动条重置为顶部?

vxf3dgd4  于 2023-08-07  发布在  Windows
关注(0)|答案(2)|浏览(126)

当RichTextBox有长文本并且滚动条也显示时,我单击滚动条的向下箭头使其滚动到底部。


的数据
然后,我点击Short Text,让RichTextBox填充更少的文本(理论上,在这种情况下,滚动条应该是自动隐藏的),我们可以注意到RichTextbox的内容已经更新了,但是滚动条仍然显示,并且在底部。如果我们选择几行文本,我们可以注意到滚动条的一部分消失了。这确实是一个怪异的bug(薛定谔的滚动条)
这似乎是WinForm的问题。所以我得想办法绕过它。然后,我添加这些代码,并期望将滚动条重置到顶部,但仍然不起作用。此外,我还使用windows消息(EM_SHOWSCROLLBAR)来隐藏滚动条,但仍然不起作用。
现在我也不知道,你能给予我点建议吗?

private void ShortTextButton_Click(object sender, EventArgs e)
        {
            richTextBox.Rtf = @"{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang3081{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
{\*\generator Riched20 10.0.22621}\viewkind4\uc1 
\pard\f0\fs20 Test Line21\par
\par
Test Line22\par
\par
Test Line23\par
\par
Test Line23\par
}";
            richTextBox.SelectionStart = 0;
            richTextBox.ScrollToCaret();
        }

个字符

yrefmtwq

yrefmtwq1#

这个“BUG”在.NET中似乎已经修复了,但在.NET Framework中仍然存在。我试了v4.5.2和v4.8两个版本,发现每次点击滚动条都会出现“BUG”。因此,我尝试添加以下代码:

richTextBox.ScrollBars = RichTextBoxScrollBars.None;
richTextBox.ScrollBars = RichTextBoxScrollBars.Both;

字符串
似乎已经解决了这个问题。

h5qlskok

h5qlskok2#

其他人也遇到了这个问题,如here,他们用这个函数修复了它:
第一个月
刷新文本框应该可以工作,并将滚动条更新到正确的可见性。

相关问题