我有一个TabControl
,AutoScroll
在tabpages上设置为true
。标签页包含一个RichTextBox
,它的高度大于页面,因此垂直滚动条出现在TabPage
上。如果我向下滚动页面,然后点击RichTextBox
,页面会滚动回到顶部。有什么办法防止这种行为吗?
UPD:Here是一个示例项目,可以重现该问题。RichTextBox
接收焦点时出现问题。例如,向下滚动tabPage1,然后选择tabPage2,返回tabPage1并单击RichTextBox
。
4条答案
按热度按时间ddrv8njm1#
好吧,经过一番挣扎,我终于找到了一个解决方案here。我所要做的就是创建我自己的类,继承自
TabPage
,并覆盖ScrollToControl
方法,使其返回DisplayRectangle.Location
。kzipqqlq2#
发生这种情况是因为一旦您选择richTextBox,并且它“不在视线范围内”,它将转到当前位置(在您的情况下,该位置不可见或位于顶部)。如果您先选择richTextBox,然后滚动,您将避免这种情况。一种方法是在应用程序启动时
Select()
richTextBox。加上这个:
编辑:
您还可以在TabIndexChanged上添加Select(),因为如果您更改了Tab,该行为将再次发生。
2wnc66cl3#
答案虽然正确,但在没有看到代码的情况下,我很难理解。也许这对其他人有帮助。
定义了自定义tabpage类之后,现在用TabControl从窗体中的该类继承。
pwuypxnk4#
我和你遇到了同样的问题。我通过将tabPanel的AutoScrollMargin属性设置为0解决了这个问题。这样页面就不会滚动到顶部。