【问题标题】:Scroll vertical dynamically in tabPage control在 tabPage 控件中动态垂直滚动
【发布时间】:2018-12-17 14:34:54
【问题描述】:

在我相对简单的项目中,我有一个两页的 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()

我的想法用完了!?

【问题讨论】:

  • 一般情况下,你会使用tabPage2.ScrollControlIntoView(...)方法。
  • @LartTech 它有效。我用不同的方法检查它以确定有问题的图像(搜索框、键盘快捷键和导航按钮)。非常感谢!我如何接受你的回答?

标签: vb.net scrollbar tabpage


【解决方案1】:

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

你应该使用方法.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()

您必须致电 .PerformLayout() 来更新滚动控件。

【讨论】:

  • 感谢@Ibn Adam,但您的解决方案引发异常 (tabPage2.AutoScroll=true; tabPage2.verticalScroll.Maximum=100) System.ArgumentOutOfRangeException HResult=0x80131502 Message='215' 的值无效为“价值”。 “值”应介于“最小值”和“最大值”之间。参数名称:值
  • @user3560520 :不,这是您的解决方案抛出异常,告诉您您正在尝试滚动超出可能的范围。
  • Ibn Adam 和@Visual Vincent 抱歉我说错了:我应该说“Ibn Adam 建议的答案并不能解决问题。” (我编辑/澄清了这个问题)。问题是启用了 AutoScroll 的 tabPage 的 VerticalScroll.Maximum 值无法更改。
  • @user3560520 :您尝试过 LarsTech 的建议吗?
  • @user3560520 它确实有效。但我们不知道您在“哪里”调用该代码。
猜你喜欢
  • 1970-01-01
  • 2021-11-13
  • 2020-02-14
  • 2012-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
相关资源
最近更新 更多