Скройте кнопки TabControl для управления сложенными средствами управления Панелью

Я должен обработать несколько панелей, содержа variuous маски данных. Каждая панель должна быть видимым использованием управления TreeView.

В это время я обрабатываю видимость панелей вручную, путем создания выбранной видимой и добиваюсь успеха вершина.

На самом деле это не очень удобно, особенно в разработчике UI, с тех пор когда я добавляю совершенно новую панель, я должен изменить размер каждой панели и затем разработать ее...

Хорошее решение использовало бы TabControl, и каждая панель содержится в TabPage. Но я не могу найти способ скрыть кнопки TabControl, так как у меня уже есть TreeView для выбора объектов.

Другим решением был бы ipotethic "StackPanelControl", где Панели расположены с помощью стека, но я не мог найти его нигде.

Что лучшее решение состоит в том, чтобы обработать этот вид UI?

13
задан Luca 9 May 2010 в 16:03
поделиться

1 ответ

Вам понадобится немного волшебства Win32 API. Элемент управления вкладкой отправляет сообщение TCM_ADJUSTRECT, чтобы приложение могло настроить размер вкладки. Добавьте новый класс в свой проект и вставьте код, показанный ниже. Скомпилировать. Перетащите новый элемент управления из верхней части панели инструментов в форму.

Вы получите вкладки во время разработки, чтобы вы могли легко переключаться между страницами. Вкладки скрыты во время выполнения, используйте свойство SelectedIndex или SelectedTab для переключения между «представлениями».

using System;
using System.Windows.Forms;

class StackPanel : TabControl {
  protected override void WndProc(ref Message m) {
    // Hide tabs by trapping the TCM_ADJUSTRECT message
    if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
    else base.WndProc(ref m);
  }
}
23
ответ дан 1 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: