Я бы использовал TabControl для «симуляции» мастера ( обратите внимание, что я лично не использовал TabControl в контексте Windows Mobile / Compact FrameWork , но является официально зарегистрированным Microsoft в рамках FrameWork для «Windows CE, Windows Mobile для Pocket PC». См .: TabControl
В WinForms есть простой способ скрыть вкладки, если вы хотите создать подобный мастеру пользовательский интерфейс: в событии формы 'Load' установите Region of the Tabcontrol равным DisplayRectangle TabControl.
tabControl1.Region = new Region(tabControl1.DisplayRectangle);
Если это сработает для вас, это избавит вас от многих проблем при перемещении пользовательских панелей управления или панелей, и вы можете создавать свои вкладки в визуальном режиме во время разработки, а затем управлять навигацией от TabPage к TabPage любым способом. ты думаешь лучше.
Возможно, вы захотите «сделать моментальный снимок» исходного региона TabControl в событии «Загрузка формы», если вы когда-нибудь захотите восстановить вкладки.
Вот краткий пример того, как это сделать: некая «односторонняя» модель от начала до конца:
Определите словарь, в котором каждый ключ является TabPage, а логическое значение каждой записи ключа определяет, разрешите ли вы пользователю переходить на эту TabPage.
// allocate the Dictionary
Dictionary<TabPage, bool> CanNavigateDict = new Dictionary<TabPage, bool>();
Вы захотите «подготовить этот словарь, выполнив что-то подобное в событии загрузки формы:
foreach (TabPage theTPage in tabControl1.TabPages)
{
CanNavigateDict.Add(theTPage, false);
}
// show the first TabPage
tabControl1.SelectedTab = tabPage1;
Управление навигацией в этой модели означает, что вам нужно установить логическое значение следующей вкладки на «true», если каким-либо образом вы удовлетворяли критериям для завершения текущей страницы: Пример
// sample of how you control navigation in the TabControl
// by using the CanNavigate Dictionary in the TabControl 'Selecting event
private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
e.Cancel = ! CanNavigateDict[e.TabPage];
}