c tabcontrol скрыть вкладку

Я разрабатываю приложение Windows Form с несколькими страницами. Я использую TabControl для реализации этого. Вместо того, чтобы использовать заголовок для переключения между вкладками, я хочу, чтобы мое приложение контролировало это, например. следующая вкладка должна открыться после того, как пользователь заполнил текстовое поле и нажал следующую кнопку.

Вы можете заменить tabcontrol на ручную панель, которая имитирует, как вы хотите:

Затем добавьте страницы и установите текущую видимую страницу:

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

Создайте новый UserControl, назовите его, например TabControlWithoutHeader, и измените унаследованный UserControl на TabControl и добавьте некоторый код. Код результата должен выглядеть так:

После компиляции у вас будет элемент управления TabControlWithoutHeader в ToolBox. Отбросьте его на форму, в дизайнере вы увидите заголовки, но во время выполнения они будут скрыты. Если вы хотите скрыть их и в дизайнере, удалите && !DesignMode .

Надеюсь, что это поможет.

Мне нужен этот код, но в VB.net, поэтому я его преобразовал. Если кому-то нужен этот код в VB.Net, он

и благодаря @Hans Passant для ответа в С#

В дополнение к существующему ответу Hans Passant, я нашел четыре способа скрыть стрелки от пользователя, когда количество вкладок превышает ширину TablessControl. Ни одно решение не обязательно идеально подходит для всех, но может быть для вас (или, по крайней мере, их комбинацией).

Решение 1:

Просто включите Multiline . Это предотвратит появление стрелок. Однако имейте в виду, что вы можете потерять WYSIWYG в дизайнере, потому что вертикальное пространство будет отрегулировано вниз по вертикали, а элементы управления в TablessControl могут быть «отрублены» внизу (опять же, только в режиме разработчика).

Решение 2:

Более продвинутое решение, которое решает проблему WYSIWYG выше, заключается только в том, чтобы включить Multiline после запуска программы. Просто добавьте этот конструктор в класс TablessControl:

Разработчику они по-прежнему будут отображаться как одна строка вкладок.

Решение 3:

Уменьшите размер шрифта TablessControl. Каждая вкладка должна соответственно уменьшаться. Поскольку пользователь никогда не видит вкладки, это не имеет большого значения, если вы установите размер шрифта даже на 4pt.

Однако будьте осторожны, так как содержимое TablessControl также может быть изменено. Если это произойдет, измените размер шрифта для каждого виджета внутри, и в этот момент они, к счастью, останутся в таком размере, даже если затем вы решите снова изменить основной размер шрифта TablessControl.

Этот подход также имеет преимущество более пристального отображения истинной вертикальной недвижимости WYSIWYG для разработчика (которая может выглядеть отлично для пользователя, но может быть слегка отрезана внизу в дизайнере из-за высоты вкладки).

Это решение может быть объединено с решениями 1 и 2 для накопленных преимуществ.

Решение 4:

Это решение не обязательно так велико, если какой-либо из вкладок имеет длинный текст. Спасибо Гансу за это.

Сначала установите TablessControl SizeMode на «Fixed», а затем уменьшите свойство TablessControl ItemSize Width до меньшего числа, чтобы уменьшить ширину каждой табуляции. Не стесняйтесь также настроить свойство ItemSize Height , чтобы помочь решить вышеупомянутую проблему WYSIWYG, хотя решение 3 может быть более полезным для этой проблемы.

Это решение может быть объединено с вышеупомянутыми решениями для дальнейшего накопления преимуществ.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

  • 20 мая 2019 в 16:27 The >30 июня 2019 в 23:05 Настраиваем «Диспетчер серверов» Windows 10 для управления серверами неродного домена
  • 29 августа 2019 в 23:18 Установка Windows после Ubuntu 18.04
  • 7 октября 2019 в 12:28 Биткоин клиппер на C#, или как не потерять свои битки
  • 25 октября 2019 в 19:45 Запускаем программы Windows на удаленном Linux сервере

Это «Песочница» — раздел, в который попадают дебютные посты пользователей, желающих стать полноправными участниками сообщества.

Если у вас есть приглашение, отправьте его автору понравившейся публикации — тогда её смогут прочитать и обсудить все остальные пользователи Хабра.

Чтобы исключить предвзятость при оценке, все публикации анонимны, псевдонимы показываются случайным образом.

Идея такая: есть 2 вкладки и одну из них нужно сделать невидимой, а затем, после определенных действий, восстановить ее работу.
Была мысль отсюда: Re: скрыть вкладку TabControl, но ее реализовать не получается.
Делаю так:

private TabPage admin = new TabPage();
private void Form1_Load(object sender, EventArgs e)
<
admin = tabControl1.TabPages[1];
tabControl1.TabPages.Remove(tabControl1.TabPages[1]);
>
private void администраторToolStripMenuItem_Click(object sender, EventArgs e)
<
//Результат проверки
if (passtrue == true)
<
tabControl1.TabPages.Add(admin);
>
>
Вкладка удаляется, а потом не появляется. Что делаю не так?

Или может вот способ: [msg=6543777], но я не могу его понять.

Оцените статью