【问题标题】:Scrollbar does not scroll to the top in tabpage滚动条不会滚动到标签页顶部
【发布时间】:2016-02-07 11:24:05
【问题描述】:

我的 tabPage 有一个奇怪的行为。首先 - 初始化表单时,我使用以下代码:

 tabPage3.VerticalScroll.Value = 0;

然而它看起来像这样:

scrollbar position

图像中的白线是工具条,因此滚动条只会向上滚动到工具条的底部。 现在,当我将代码行放入 tabPage 的 Paint 事件中时,它可以工作(滚动条位于 tabPage 的最顶部)。但是,我不能再向下移动滚动条——每次我想移动它时它都会跳回顶部。我尝试了不同的条件,例如在进入标签页时或在页面的滚动事件中设置一个值,以便在绘制事件中只使用一次代码,但随后会导致如图所示的行为。

我该如何解决这个问题? 提前致谢!

【问题讨论】:

  • Paint 事件运行很多。每次需要重新绘制控件时。所以你放在那里的代码会经常执行。如果那里有重置滚动条位置的代码,则无法滚动。无论如何,完全没有必要将滚动条的值“初始化”为 0。这是默认位置(在顶部或一直到左侧,具体取决于滚动条的方向)。
  • 好的,但是为什么在绘制事件中它可以正常工作(取决于位置)?如何实现滚动条的位置在工具条的最顶部?

标签: c# winforms scrollbar tabpage toolstrip


【解决方案1】:

您可以使用 tabControl 的 Selectedindexchanged 事件,而不是使用 tabPage 的 onPaint 事件。每次显示 TabPage 3 时,您都可以将 Scrollbarvalue 设置为 0。你的代码看起来像这样。

private void TabControl1_SelectedIndexChanged(Object sender, EventArgs e)
{
  if(tabControl1.SelectedTab = tabPage3)
  {
    tabPage3.VerticalScroll.Value = 0;
  }
}

【讨论】:

  • 这将导致与图像中所示相同的行为。它不会滚动到顶部
  • 您是否将 TabControl1_SelectedIndexChanged 添加到您的 TabControl 的 IndexChanged 事件中?
  • 是的,我做到了。结果相同。这是一种奇怪的行为。滚动条只是被工具条挡住了。到目前为止,这仅适用于绘画事件。只有当它被触发很多时。有解决方案吗?我不明白...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多