【问题标题】:WinForm Panel scrolling without a scrollbar?WinForm面板滚动没有滚动条?
【发布时间】:2010-11-22 10:35:58
【问题描述】:

我正在创建一个用户控件,它基本上是一个面板(内部包含随机内容),我需要能够使用按钮(向上和向下)而不是滚动条来向上和向下滚动此面板。

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

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

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

谢谢! =D

【问题讨论】:

    标签: winforms scrollbar


    【解决方案1】:

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

    然而,一种更简单的方法可能是只使用非常宽/高的滚动条,并将它们的 Thumbwidth(我认为这是属性)设置为相同的大值 - 这将产生易于用手指使用的滚动条.据我所知,无法使用出现在自动滚动设置为 True 的面板上的滚动条来执行此操作,因此您仍然需要使用我上面提到的方法(在您的 UserControl 上放置一个内部面板)并添加滚动条自己移动。

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

    【讨论】:

    • 嘿,感谢您的精彩回答MusiGenesis!我有点认为移动面板的位置是最简单的方法。但是,我想避免这样做,因为面板的大小将基于其中的内容,现在我必须做更多的工作来确定面板和内容的大小。尽管如此,这似乎是我要走的路。再次感谢!
    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2011-03-28
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多