【问题标题】:How do I scroll a StatusStrip control in VB.NET WinForms?如何在 VB.NET WinForms 中滚动 StatusStrip 控件?
【发布时间】:2011-12-18 03:19:31
【问题描述】:

当 StatusStrip 的控件超出表单查看区域时,有什么方法可以在 StatusStrip 中滚动?我的 StatusStrip 充当带有许多标签(充当按钮)的任务栏,如果标签过多,可能会超出屏幕范围。

【问题讨论】:

  • 谢谢汉斯,这有点用!在我有能力提出不同的解决方案之前,一定要使用它!

标签: .net vb.net winforms scroll statusstrip


【解决方案1】:

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

你可能认为这是一个无关紧要的点,但我提到它是有原因的。设计与您的平台约定一致的应用程序具有巨大的优势,因此也符合您的用户期望。这些应用程序更容易编写(打破规则总是比遵守规则更难),并且用户更容易理解和使用。

很有可能,即使有滚动条,用户也永远不会找到并使用它,因为他们期望在状态栏控件上找到滚动条。我当然不会。我会在那里寻找我希望找到的信息,而不是找到它,然后感到沮丧。像大多数用户一样,我不会费心阅读文档来了解我必须滚动一些永远不可滚动的东西。我只是得出结论,您的应用的用户界面很糟糕,然后就可以解决了。

事实上,尽管您和我作为程序员 可能会认为典型的 [愚蠢] 用户,但作为典型的愚蠢用户,我会是完全正确的!您的应用程序确实有一个糟糕的 UI,因为它不标准且难以使用。这是很多程序员不理解或不欣赏的东西,但它非常重要。

因此,我强烈建议您重新考虑应用程序的 UI 设计。主要关注点(并且只是一般的良好设计)应确保重要信息显示或可访问多个位置,而不仅仅是在状态栏中。另一种选择是在状态栏中显示 less 的信息。就像 Windows 资源管理器一样,您应该在可用屏幕空间缩小时自动隐藏不太重要的信息,并在您有必要的空间时显示更多信息。让资源管理器窗口变得非常小,您只会在状态栏中看到最基本的内容。

但是,如果您决定忽略所有这些建议并搞砸您已经决定的事情,请继续阅读... StatusStrip 控件继承自 ScrollableControl,这意味着它具有 @987654324 等属性@ 和 HScroll。但是documentation 表示这样的属性是:

基础设施。此属性与此类无关。

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

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

【讨论】:

  • 这个 Cody 怎么样,我的状态条作为一个任务栏,带有凸起/凹陷边框的标签,就像切换开关一样,看起来就像 Windows XP(没有主题)任务栏。标签(按钮)以编程方式添加,这个“任务栏”存在的原因是因为它处理 MDI 父级内部的 MDI 子级,其行为与 Windows 中的任务栏处理“窗口”的行为完全相同,所以是的,它更难编程它和我不确定直接广播是否最适合我所做的事情,但从我的角度来看任务完成了。我只需要让它处理“尽可能多的窗口”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
相关资源
最近更新 更多