C# Winforms:没有自动滚动的滚动条
C# Winforms: Scrollbars without AutoScroll
我有一个 TabPage,里面有东西。我的一些用户的屏幕很小,有些东西放不下。当我在 TabPage 上将 AutoScroll 设置为 true 时,它会按预期添加滚动条。然而...
这个TabPage中有一个ListBox。 ListBox 的位置使得单击 select ListItem 会导致 TabPage 将整个 ListBox 滚动到视图中 ,这又会导致单击 select错误的 ListItem。
如果我禁用 AutoScroll,ListBox 可以正常工作,但用户无法滚动 TabPage。
我已经尝试添加面板和 TableLayoutPanels 并搞乱各种组合,其中有 AutoScroll,哪些没有。
我尝试了 DLLImport hack,将无样式的滚动条强制放到面板上,但该滚动条没有做任何事情,它看起来不像应用程序中的其他滚动条。
编辑: 请注意,有些用户的屏幕更大。在 那些 屏幕上,有足够的 space 显示整个 TabPage 而无需滚动,并且它可以正常工作。
如何在没有 auto 滚动行为的情况下获得 scrollbars?
尝试像这样创建一个新的面板控件:
public class PanelEx : Panel {
protected override Point ScrollToControl(Control activeControl) {
return this.DisplayRectangle.Location;
}
}
将此面板放入 TabPage 并将 Dock 属性 设置为 Fill。将所有控件放在该面板而不是 TabPage 中。
我有一个 TabPage,里面有东西。我的一些用户的屏幕很小,有些东西放不下。当我在 TabPage 上将 AutoScroll 设置为 true 时,它会按预期添加滚动条。然而...
这个TabPage中有一个ListBox。 ListBox 的位置使得单击 select ListItem 会导致 TabPage 将整个 ListBox 滚动到视图中 ,这又会导致单击 select错误的 ListItem。
如果我禁用 AutoScroll,ListBox 可以正常工作,但用户无法滚动 TabPage。
我已经尝试添加面板和 TableLayoutPanels 并搞乱各种组合,其中有 AutoScroll,哪些没有。
我尝试了 DLLImport hack,将无样式的滚动条强制放到面板上,但该滚动条没有做任何事情,它看起来不像应用程序中的其他滚动条。
编辑: 请注意,有些用户的屏幕更大。在 那些 屏幕上,有足够的 space 显示整个 TabPage 而无需滚动,并且它可以正常工作。
如何在没有 auto 滚动行为的情况下获得 scrollbars?
尝试像这样创建一个新的面板控件:
public class PanelEx : Panel {
protected override Point ScrollToControl(Control activeControl) {
return this.DisplayRectangle.Location;
}
}
将此面板放入 TabPage 并将 Dock 属性 设置为 Fill。将所有控件放在该面板而不是 TabPage 中。