Я работаю над краткой статьей для CodeProject о «волшебнике для бедняков», который использует стандартный WinForms TabControl в качестве «основы»: но он не будет готов в течение нескольких недель.
Но подумайте о преимуществах использования стандартного WinForms TabControl:
"меньше кода" == "дешево": он будет обрабатывать все "дела", предложенные вышеупомянутым комментарием Мандзура Ахмеда (замена и вставка нескольких панелей), с гораздо меньшим количеством кода.
"нет рисования" == "меньше работы": его можно использовать без какого-либо специального кода отрисовки владельца или рисования (статья Simmons о CodeProject, цитируемая выше Джей Риггсом, имеет несколько дополнительных пользовательских рисований для градиентов, но у меня есть не изучил этот код подробно, чтобы увидеть, может ли он использоваться без любого пользовательского рисунка / рисования). Обратите внимание, конечно, что предложение Мансура также не потребует пользовательского рисунка / живописи.
гибкость в пользовательском интерфейсе: вы можете показать вкладки или скрыть их.
Вот две идеи о том, как начать использовать TabControl в качестве «мастера»:
I: как скрыть сами вкладки, если вы не хотите, чтобы они были видны (при условии, что TabControl с именем tabControl1 в форме с именем Form1):
а. если вы хотите восстановить видимость вкладок: создайте переменную области видимости типа Region и в событии Load формы поместите текущую область TabControl в эту переменную:
Region tabOriginalRegion;
private void Form1_Load(object sender, EventArgs e)
{
tabOriginalRegion = tabControl1.Region;
}
б. добавьте это в событие загрузки формы, чтобы скрыть вкладки
// hide the tabs
tabControl1.Region = new Region(tabControl1.DisplayRectangle);
II: после того, как вкладки скрыты: тогда, очевидно, вы будете размещать свои собственные кнопки на каждой странице вкладок для управления движением вперед и назад. если вкладки являются видимыми, то вы захотите обработать событие выбора TabControl: внутри этого обработчика событий вы можете использовать e.TabPage, чтобы получить вкладку «назначение», и вы можете отменить навигацию к этому вкладку «назначение» путем установки e.Cancel = true.
Надеюсь, это полезно.