Pull to refresh

Как убрать кнопки-закладки в TabControl

Иногда возникает необходимость сделать так, чтобы в определённом месте формы показывались то одни, то другие элементы интерфейса. Если логика показа задаётся пользователем, решение очевидно — вешаем TabControl, и пусть себе переключается между закладками.
Однако, иногда требуется, чтобы логика переключения целиком управлялась программой — это создание мастеров (которые визарды), это создание форм, отражающих состояние процесса, это разнообразные фильтры данных и прочее.
Конечно, кнопки-закладки тогда требуется скрыть.
В Delphi для этой цели существовал особый вариант значения того свойства, которое в C# зовётся Appearance. Однако, ещё со времён первой версии .NET было замечено, что при создании там своего аналога дельфийского VCL ряд весьма полезных свойств различных компонент был либо убран в private, либо исчез совсем. Уже во второй версии часть их вернулась, но, увы, часть осталась за кадром до сих пор. К ним относится и данное свойство.
Если контролов не очень много, а техническое задание понятно и неизменно, бывает, делают так — рисуют несколько панелек, раскладывают на них контролы, затем совмещают их положение и размеры, и делают видимой только одну. Плюс реализуют логику сокрытия панелек при установке видимости одной.
Однако, на практике ТЗ имеет обыкновение меняться, и уже одного этого достаточно, чтобы хотеть чего-то более удобного для работы в режиме проектирования. То есть — того самого TabControl без кнопок.
Так вот. Рассказываю способ убрать кнопки. Способ был придуман кем-то давно на знаменитом GotDotNet.
1. Appearance ставим во FlatButtons (можно просто Buttons, но тогда немного мусора в Design Mode будет видно).
2. ItemSize ставим в (0; 1) (это собственно размер кнопки — сделать высоту 0 мы не можем, но при режиме FlatButtons и так нормально).
3. SizeMode ставим в Fixed (без этого нулевая ширина кнопок-закладок не будет сказываться на их внешнем виде).
4. TabStop ставим в False (иначе по табуляции пользователь будет уходить в закладки).
Дополнительно можно реализовать борьбу с произвольными нажатиями Ctrl-Tab, это уже как fool proof.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.