【问题标题】:Capture current scrollbar position vb.net捕获当前滚动条位置 vb.net
【发布时间】:2014-02-27 15:40:25
【问题描述】:

我试图捕捉 tabcontrol 滚动条的位置。然而,事实证明这有些困难。最终目标是通过将当前位置与新的项目行的大小(即 105)重新定位滚动条位置,因此新位置 =(旧位置 + 105)。

我正在使用 winform vb.net

【问题讨论】:

  • TabControl 通常没有滚动条。您指的是 TabPage 吗?如果是这样,请检查其 AutoScrollPosition 属性的 Y 值。
  • Dim CURPOS As Integer = TabPage1.scrollbar.value Dim NEWPOS As Integer = (CURPOS + 105) TabPage1.scrollbar.value = (NEWPOS) ???
  • LarsTech 是对的,这是 TabControl 的 TabPage 之一。如我的回答所示,您应该访问垂直/水平滚动。

标签: vb.net winforms scrollbar tabcontrol


【解决方案1】:

如上所述,您的意思是TabPage(以下代码中的TabPage1)。你有两个选择:

a) 使用标准的.Value 属性(VerticalScrollHorizontalScroll)。示例:

TabPage1.VerticalScroll.Value = TabPage1.VerticalScroll.Value + 105 

注意 Y 值从顶部开始,因此 +105 表示垂直滚动向下移动。

b) 使用ScrollControlIntoView 方法。示例:

TabPage1.ScrollControlIntoView(Panel1)

其中Panel1 可以替换为TabPage1 包含的任何控件;两个滚动条(水平和垂直)都将被移动,以便给定控件(在本例中为Panel1)将变得完全可见。

【讨论】:

  • 我知道这是要编码\分配给一个按钮,因为我不希望在我的标签页上看到可见的滚动条(对于我的要求,它们看起来很可怕),但现在我不能在我的标签页
  • @Argon 到一个按钮?我不明白你的意思。此代码根据您的要求控制滚动条的行为。让它们可见与否是另一回事。另请注意,此代码(或任何其他代码)可以或多或少地自动触发(例如,从与 TabControl/TabPage 关联的事件之一;或者正如您在问题中提出的那样:当将新行添加到给定控制)或通过用户干预(例如,单击按钮);但这也与您的问题无关。你能更好地解释一下你的意思吗?
  • 我正在制作一个严重依赖于 UI 的应用程序,滚动条就是不走:) Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click '---If the number of buttons is equal or more then 25... Dim BTNCOUNT As Integer = Me.TabControl1.SelectedTab.Controls.Count If BTNCOUNT >= 25 Then TabControl1.SelectedTab.VerticalScroll.Value = TabControl1.SelectedTab.VerticalScroll.Value + 110 Else MsgBox("Nothing to scroll") End If End Sub
  • @Argon 如前所述,建议的代码处理滚动条的位置(根据您的要求),而不是其可见性。如果您不希望滚动条可见(除非使用时),您应该影响AutoScroll 属性。即:TabPage1.AutoScroll = False 在开头和TabPage1.AutoScroll = True 在按钮中(在影响Value 属性之前)。这与您的原始问题并不完全相关;但是,无论如何,您应该在问题中添加任何代码,而不是通过 cmets。
  • @Argon 没问题。在这里提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 2013-03-22
相关资源
最近更新 更多