C# Winforms:没有 AutoScroll 的滚动条
Posted
技术标签:
【中文标题】C# Winforms:没有 AutoScroll 的滚动条【英文标题】:C# Winforms: Scrollbars without AutoScroll 【发布时间】:2015-12-01 02:17:27 【问题描述】:我有一个 TabPage,里面有东西。我的一些用户的屏幕很小,其中一些东西不适合。当我在 TabPage 上设置 AutoScroll true 时,它会按预期添加滚动条。不过……
在这个 TabPage 中有一个 ListBox。 ListBox 的位置使得单击它以选择一个 ListItem会导致 TabPage 将整个 ListBox 滚动到视图中,这反过来又会导致单击选择错误的 ListItem。
如果我禁用 AutoScroll,ListBox 可以正常工作,但用户无法滚动 TabPage。
我曾尝试添加面板和 TableLayoutPanel,并弄乱了具有 AutoScroll 和不具有 AutoScroll 的各种组合。
我尝试了一个 DLLImport hack,它强制将一个无样式的滚动条放到面板上,但该滚动条没有做任何事情,而且它看起来不像应用程序中的其他滚动条。
编辑:请注意,有些用户的屏幕更大。在 那些 屏幕上,有足够的空间来显示整个 TabPage 而无需滚动,并且可以正常工作。
如何在没有 auto 滚动行为的情况下获得 scrollbars?
【问题讨论】:
可以依靠VScrollBar & HScrollBar手动实现滚动条。 【参考方案1】:尝试像这样创建一个新的面板控件:
public class PanelEx : Panel
protected override Point ScrollToControl(Control activeControl)
return this.DisplayRectangle.Location;
将此面板放在您的 TabPage 中,并将 Dock 属性设置为 Fill。将所有控件放入该面板而不是 TabPage。
【讨论】:
以上是关于C# Winforms:没有 AutoScroll 的滚动条的主要内容,如果未能解决你的问题,请参考以下文章
Winforms (C#) 中的 OleDb 参数查询:没有错误但没有更新行