C#Winforms:没有自动滚动的滚动条

C#Winforms:没有自动滚动的滚动条,c#,winforms,autoscroll,C#,Winforms,Autoscroll,我有一个标签页,里面有东西。我的一些用户有小屏幕,其中一些东西不适合。当我在TabPage上设置AutoScroll true时,它会像预期的那样添加滚动条。然而 此选项卡页中有一个列表框。ListBox的位置使得单击它来选择ListItem会导致TabPage将整个ListBox滚动到视图中,从而导致单击选择错误的ListItem 如果禁用AutoScroll,列表框将正常工作,但用户无法滚动选项卡页面 我尝试过添加面板和TableLayoutPanels,并尝试过各种组合,其中有AutoSc

我有一个标签页,里面有东西。我的一些用户有小屏幕,其中一些东西不适合。当我在TabPage上设置AutoScroll true时,它会像预期的那样添加滚动条。然而

此选项卡页中有一个列表框。ListBox的位置使得单击它来选择ListItem会导致TabPage将整个ListBox滚动到视图中,从而导致单击选择错误的ListItem

如果禁用AutoScroll,列表框将正常工作,但用户无法滚动选项卡页面

我尝试过添加面板和TableLayoutPanels,并尝试过各种组合,其中有AutoScroll,而没有AutoScroll

我曾尝试过DLLImport黑客攻击,该攻击将一个非样式的滚动条强制放到面板上,但该滚动条没有做任何事情,而且它看起来也不像应用程序中的其他滚动条

编辑:请注意,有些用户的屏幕较大。在这些屏幕上,有足够的空间显示整个选项卡页面而无需滚动,并且工作正常


如果没有自动滚动行为,如何获取滚动条?

尝试创建一个新的面板控件,如下所示:

public class PanelEx : Panel {
  protected override Point ScrollToControl(Control activeControl) {
    return this.DisplayRectangle.Location;
  }
}

将此面板放在选项卡页中,并将Dock属性设置为Fill。将所有控件放在该面板中,而不是选项卡页。

您可以依靠VScrollBar和HScrollBar手动实现滚动条。