Иногда возникает необходимость сделать так, чтобы в определённом месте формы показывались то одни, то другие элементы интерфейса. Если логика показа задаётся пользователем, решение очевидно — вешаем 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.
Однако, иногда требуется, чтобы логика переключения целиком управлялась программой — это создание мастеров (которые визарды), это создание форм, отражающих состояние процесса, это разнообразные фильтры данных и прочее.
Конечно, кнопки-закладки тогда требуется скрыть.
В 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.