如何在VB.NET WinForms中滚动StatusStrip控件?

时间:2011-12-18 03:19:31

标签: .net vb.net winforms scroll statusstrip

当StatusStrip的控件超出表单查看区域时,有没有办法在StatusStrip中滚动?我的StatusStrip充当一个带有很多标签(充当按钮)的任务栏,如果有太多标签可能超出屏幕范围。

1 个答案:

答案 0 :(得分:4)

我已经从未在我曾经使用的任何Windows应用程序中看到滚动状态栏控件。

你可能认为这是一个非常无关紧要的观点,但我提到它是有原因的。在设计符合您平台惯例的应用程序方面具有巨大优势,因此也符合您用户的期望。这些应用程序更容易编写(违反规则总是比遵循它们更难)并且用户更容易理解和使用。

很可能,即使有滚动条,用户也永远不会找到它并使用它,因为他们期待在状态栏控件上找到滚动条。我当然不会。我会向往那里寻找我希望找到的信息,而不是找到它,并感到沮丧。像大多数用户一样,我不打算阅读文档来理解我必须滚动一些永远不会滚动的东西。我只是得出结论你的应用程序有一个糟糕的用户界面,并完成它。

事实上,尽管你和我作为程序员可能会想到典型的[哑]用户,但我作为典型的愚蠢用户会非常正确!您的应用程序 具有错误的UI,因为它非标准且难以使用。这是许多程序员不理解或欣赏的东西,但它非常重要。

因此,我高度建议您重新考虑应用程序的UI设计。主要关注点(以及一般的优秀设计)应该是确保显示或访问多个位置的重要信息,而不仅仅是状态栏。另一个选项是在状态栏中显示该信息的 less 。与Windows资源管理器非常相似,当您可用的屏幕空间缩小时,您应自动隐藏不太重要的信息,并在您有足够的空间时显示更多信息。使资源管理器窗口非常小,您只能在状态栏中看到基本要素。

但是如果你决定忽略所有这些建议并且通过你已经决定的事情搞砸了,继续阅读...... StatusStrip控件继承自ScrollableControl,这意味着它有这样的属性为AutoScrollHScroll。但documentation表示此类属性为:

  

基础结构。此属性与此类无关。

这意味着StatusStrip控件不支持它们。您可以从StatusStrip继承并编写自己的滚动代码,但这对我来说听起来很多。

更简单的解决方案可能是将Panel控件停靠在表单底部,然后将StatusStrip控件放在Panel内。确保设置容器AutoScroll控件的Panel属性,并且它应自动展开(使用滚动条)以显示整个StatusStrip控件。