当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();
}
个字符
2条答案
按热度按时间yrefmtwq1#
这个“BUG”在.NET中似乎已经修复了,但在.NET Framework中仍然存在。我试了v4.5.2和v4.8两个版本,发现每次点击滚动条都会出现“BUG”。因此,我尝试添加以下代码:
字符串
似乎已经解决了这个问题。
h5qlskok2#
其他人也遇到了这个问题,如here,他们用这个函数修复了它:
第一个月
刷新文本框应该可以工作,并将滚动条更新到正确的可见性。