在 tabPage 控件中动态垂直滚动

Scroll vertical dynamically in tabPage control

在我相对简单的项目中,我有一个两页的 tabControl。 tabPage2 由动态创建的图片框(缩略图,pic_XXX)组成。 tabPage2 是固定大小的,启用了 AutoScroll。

在 tabPage1 上,除其他外,我可以搜索给定名称 (pic_XXX)。当我切换到 tabPage2 时,我希望它被滚动,所以 pic_XXX 所在的行是可见的。在 tabPage2 中手动滚动是有效的。

我正在努力动态滚动 tabPage2 来完成此操作。以下解决方案引发异常:

Dim pos As Point = tabPage2.Controls.Item("pic_" & imgNum).Location
tabPage2.VerticalScroll.Value = pos.Y
tabPage2.refresh()

我运行没主意了!?

那么如何将指定的子控件滚动到启用自动滚动的控件的视图中?

You should use method .ScrollControlIntoView( [Control] )

tabPage2.ScrollControlIntoView(tabPage2.Controls.Item("pic_" & imgNum) ) 

您问题的答案:

Dim pos As Point = tabPage2.Controls.Item("pic_" & imgNum).Location 
tabPage2.VerticalScroll.Maximum = tabPage2.Height
tabPage2.VerticalScroll.Value = pos.Y
tabPage2.PerformLayout()

You have to call .PerformLayout() to make the scrolling control update.