Tabcontrol: Как вы можете удалить заголовок вкладки? - PullRequest
2 голосов
/ 01 декабря 2009

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

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

Ответы [ 3 ]

6 голосов
/ 01 декабря 2009

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

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);
  }
}
1 голос
/ 13 июля 2010

попробуйте использовать ответ, приведенный здесь :) .. установка области вкладки

Сборка приложения C # .NET для Windows с несколькими представлениями

0 голосов
/ 01 декабря 2009

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

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

...