Замена элемента управления вкладками WinForms, которая может использоваться с большим количеством вкладок - PullRequest
2 голосов
/ 08 декабря 2010

Наше приложение имеет элемент управления вкладками, который показывает переменное количество вкладок.В большинстве случаев имеется несколько вкладок, а метафора «вкладки» проста и удобна в использовании.

Но в редких случаях (при работе с определенными типами данных) нам может понадобиться гораздо большевкладки, которые будут помещаться по всему экрану.Когда это происходит, надежный элемент управления вкладками больше не является хорошим пользовательским интерфейсом.Делаете ли вы несколько строк вкладок или маленькие кнопки прокрутки, найти нужную вкладку становится огромной головной болью.

Редактор Visual Studio может справиться с этой ситуацией с относительной грацией.Отображается только ограниченное количество вкладок за раз (однако многие будут помещаться на экране);и если вы хотите что-то, что в данный момент не видно, есть выпадающая кнопка, которая показывает полный список. Существуют ли какие-либо сторонние элементы управления вкладками WinForms, которые предлагают аналогичную функциональность - несколько вкладок за раз плюс выпадающий список?

В действительности бывают случаи, когда даже выпадающий список будетслишком длинный, чтобы поместиться на экране, поэтому было бы полезно узнать, как с этим справляются любые элементы управления вкладками.Полоса прокрутки (где вы можете быстро перетащить большой палец в нужное место) была бы хороша;так что будет добавочный поиск с использованием клавиатуры.

Для целей этого вопроса предположим, что замена вкладок с другой метафорой пользовательского интерфейса (например, список внизу слева) не вариант.(Мы исследуем это, но это не тот вопрос, о котором идет речь.)

Ответы [ 2 ]

2 голосов
/ 08 декабря 2010

Telerik имеет коммерческую библиотеку элементов управления Winforms , которая имеет элемент управления, называемый RadPageView . Это может вести себя подобно тому, что вы описываете в режиме StripView. Библиотека стоит дорого только для этого одного элемента управления.

DevExpress также имеет один из своих библиотек XtraEditors под названием XtraTabControl . У него есть «Дополнительный стиль рисования, эмулирующий интерфейс с вкладками в Visual Studio 2005», хотя нет скриншотов того, как это выглядит. На этой странице есть снимок экрана, хотя он не выглядит так, как вам нужно.

1 голос
/ 09 декабря 2010

Infragistics имеет элемент управления WinTab , который можно настроить для этого. Если вы установите для ShowTabListButton значение True, вы получите кнопку с раскрывающимся списком, в которой показан список всех вкладок; и если вы установите ScrollButtons на None и ShowPartialTab на False, он покажет только столько вкладок, сколько поместится.

Это также очень эффективно - я могу добавить 750 вкладок менее чем за секунду (в отличие от 6 секунд для стандартного WinForms TabControl и 43 секунд для DevExpress XtraTabControl). Он даже поддерживает контент, который распределяется на всех страницах, и это то, что нужно нашему приложению.

Единственным недостатком является то, что при нажатии на раскрывающееся меню «Список вкладок» список отображается в раскрывающемся меню. Это меню не поддерживает пошаговый поиск с помощью клавиатуры; и если меню выше, чем умещается на экране, нет возможности быстро прокрутить - вы просто получаете кнопки «прокрутка вверх» и «прокрутка вниз», которые мучительно прокручиваются медленно. Поэтому, если список длиннее, чем умещается на экране, это выпадающее меню так же непригодно, как и горизонтальная прокрутка длинного списка вкладок.

С другой стороны, есть свойство SpaceAfterTabs, которое позволяет оставить пустое пространство справа от последней вкладки. Можно было бы поместить поле со списком или какой-либо другой вид раскрывающегося элемента управления в это пустое пространство и развернуть свое собственное "меню" переполнения с лучшим поведением.

...