WinForms选项卡控件替换为';它可以与大量选项卡一起使用

WinForms选项卡控件替换为';它可以与大量选项卡一起使用,winforms,tabcontrol,Winforms,Tabcontrol,我们的应用程序有一个选项卡控件,可以显示不同数量的选项卡。大多数情况下,有几个选项卡,“选项卡式”隐喻简单易用 但在极少数情况下(在处理某些类型的数据时),我们可能需要比屏幕上显示的选项卡多得多的选项卡。当这种情况发生时,可靠的选项卡控件不再是一种良好的用户体验。无论您是使用多行选项卡,还是使用小滚动按钮,查找所需的选项卡都是一件非常头疼的事情 VisualStudio的编辑器可以相对优雅地处理这种情况。它一次只显示有限数量的选项卡(但屏幕上会显示很多);如果你想要一些当前不可见的东西,有一个下

我们的应用程序有一个选项卡控件,可以显示不同数量的选项卡。大多数情况下,有几个选项卡,“选项卡式”隐喻简单易用

但在极少数情况下(在处理某些类型的数据时),我们可能需要比屏幕上显示的选项卡多得多的选项卡。当这种情况发生时,可靠的选项卡控件不再是一种良好的用户体验。无论您是使用多行选项卡,还是使用小滚动按钮,查找所需的选项卡都是一件非常头疼的事情

VisualStudio的编辑器可以相对优雅地处理这种情况。它一次只显示有限数量的选项卡(但屏幕上会显示很多);如果你想要一些当前不可见的东西,有一个下拉按钮显示完整的列表是否有提供类似功能的第三方WinForms选项卡控件—一次几个选项卡,外加一个下拉列表?

事实上,有时甚至下拉列表也会太长,无法显示在屏幕上,因此了解任何选项卡控件如何处理这一问题会很有帮助。一个滚动条(在这里你可以快速地将拇指拖动到正确的邻域)会很好;使用键盘进行增量搜索也是如此

出于这个问题的目的,假设用其他UI隐喻(例如左侧下方的列表框)替换选项卡不是一个选项。(我们正在探索这一点,但这不是这个问题的主题。)

Telerik有一个广告,它有一个名为的控件。这可能与您在StripView模式下描述的行为类似。不过,仅此一个控件的库就很昂贵

DevExpress也有一个作为其XtraEditors库的一部分,名为。这有一个“模拟VisualStudio2005选项卡式界面的附加绘画样式”,尽管没有屏幕截图。页面上有一个屏幕截图,尽管它看起来不像您所需要的。

Infragistics有一个可定制的屏幕截图。如果将ShowTableListButton设置为True,则会得到显示所有选项卡列表的下拉按钮;如果您将ScrollButtons设置为None,将ShowPartialTab设置为False,它将只显示尽可能多的选项卡

它的性能也非常好——我可以在不到一秒钟的时间内添加750个选项卡(而标准WinForms TabControl只需6秒,而DevXpress XtraTabControl只需43秒)。它甚至支持在所有页面上共享的内容,这正是我们的应用程序所需要的

唯一的缺点是,当您单击“选项卡列表”下拉列表时,它会在下拉菜单中显示列表。此菜单不支持使用键盘进行增量搜索;如果菜单的高度超过了屏幕所能容纳的高度,那么就没有办法快速滚动——你只需要“向上滚动”和“向下滚动”按钮,它们滚动得非常慢。因此,当列表的长度超过屏幕上显示的长度时,此下拉菜单就像在一长串选项卡中水平滚动一样无法使用


另一方面,还有一个SpaceAfterTabs属性,它允许您在最后一个选项卡的右侧保留空白。可以在空白处放置一个组合框或其他类型的下拉控件,然后滚动您自己的、性能更好的溢出“菜单”。

我们有DevExpress——它的外观类似于VS,但不会进行下拉溢出。Telerik看起来可能会实现我的想法(尽管你认为它价格昂贵是对的)。当溢出下拉列表太高而无法在屏幕上显示时,你知道Telerik的工作效果如何吗?@Joe:不知道,但他们有一个试用版,你可以试用。Telerik的下拉列表有一个滚动条,这很好;但这是有缺陷的(例如,当您拖动滚动拇指时,如果您的鼠标偏离滚动条的边界框,它们的行为就好像您单击了下拉列表中的某个项目,这是错误的,而且会让人非常迷失方向)。而且我一辈子都不知道如何让它看起来像一个普通的标签控件——它坚持蓝色、闪亮,浪费屏幕空间。Telerik没能给我留下好印象。。。