WinForm面板滚动没有滚动条?

时间:2009-08-24 22:08:52

标签: winforms scrollbar

我正在创建一个基本上是Panel的用户控件(里面有随机内容),我需要能够使用按钮(向上和向下)而不是滚动条向上和向下滚动。

我必须这样做的原因是因为程序将在触摸屏显示器上使用,我们需要大按钮而不是丑陋的小滚动条。

我一直在搞乱VerticalScrollbar属性,但它们似乎都没有做任何事情。我注意到如果我将AutoScroll设置为false,则AutoScrollPosition实际显示坐标,除了它应该是负数。另外,我注意到panel.VerticalScrollbar.Visible = true;只有在放置在构造函数之外时才能工作。这有什么理由吗?

基本上,WinForms的滚动条对我来说非常混乱(错误?)。有没有人知道用按钮以编程方式向上和向下滚动面板的好方法(我不在乎是否需要一个不可见的滚动条)。

谢谢! = d

1 个答案:

答案 0 :(得分:5)

使您的UserControl成为常规UserControl(即从UserControl而不是Panel继承)并在您的UserControl上放置一个Panel。将任何内容/控件放在内部面板上,然后更改Panel的Left和Top属性以在没有滚动条的情况下移动它。您还可以向UserControl添加按钮以处理内部面板的移动。

然而,更简单的方法可能是使用真正的宽/高滚动条,并将它们的Thumbwidth(我认为这是属性)设置为相同的大值 - 这将产生易于使用手指的滚动条。据我所知,使用Autoscroll设置为True的面板上显示的滚动条无法做到这一点,因此您仍然需要使用我上面提到的方法(内部Panel位于UserControl上)并添加滚动条自己移动它。

我同意Windows中的滚动条很糟糕,所以虽然我通常赞成只使用每个人都习惯的标准控件,但在这种情况下,我认为滚动自己的滚动条没有任何问题。