2009-12-01 4 views
2

У меня есть tabcontrol, используемый для отображения нескольких файлов изображений в приложении. Я хотел бы удалить заголовок табуляции, когда отображается только одна вкладка, поэтому я могу использовать это пространство экрана для изображения. (Это похоже на отмену выбора «Всегда показывать панель вкладок» в Firefox.)Tabcontrol: Как удалить заголовок страницы?

Возможно ли это сделать с помощью tabcontrol? Или мне лучше использовать панель управления, когда открыт только один файл (вкладка)?

ответ

6

Да, это возможно. Добавьте новый класс в свой проект и вставьте код, показанный ниже. Компиляция. Отбросьте новый элемент управления сверху панели инструментов на свою форму.

using System; 
using System.Windows.Forms; 

public class MyTabControl : TabControl { 
    private int mPages = 0; 
    private void checkOnePage() { 
    if (IsHandleCreated) { 
     int pages = mPages; 
     mPages = this.TabCount; 
     if ((pages == 1 && mPages > 1) || (pages > 1 && mPages == 1)) 
     this.RecreateHandle(); 
    } 
    } 
    protected override void OnControlAdded(ControlEventArgs e) { 
    base.OnControlAdded(e); 
    checkOnePage(); 
    } 
    protected override void OnControlRemoved(ControlEventArgs e) { 
    base.OnControlRemoved(e); 
    checkOnePage(); 
    } 
    protected override void WndProc(ref Message m) { 
    // Hide tabs by trapping the TCM_ADJUSTRECT message 
    if (m.Msg == 0x1328 && !DesignMode && this.TabCount == 1) m.Result = (IntPtr)1; 
    else base.WndProc(ref m); 
    } 
} 
+0

Это работает! (Даже в vb.) – xpda

+0

Хороший там! +1 –

+0

Кажется, что он работает нормально, не вызывая checkOnePage. Есть ли причина, по которой я должен это делать? – xpda

0

Я не помню никаких средств для скрытия метки табуляции. Моя рекомендация:

У вас есть содержимое вкладки в панелях. Когда только одна вкладка, переместите панель, чтобы заменить tabcontrol или что-то в этом роде.

Смежные вопросы