Закруглить tabcontrol visual studio

Обновлено: 07.07.2024

This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.

Asked by:

Question

I'm trying to use the tabcontrol since VS2003 and it always have had those irregular white borders:

I have never known why this has never been fixed, I have tried to change all properties but there is no option to get rid of this and have a smooth outlook of this control.

So my question is: Is there way to eliminate those white borders?

I've found this post in here with the same problem, but they look pretty advanced to me

Can someone help me with this?

Thanks in advance.

All replies

Excuse me, can you help me to if that thread can solve your problem?

I think you can use this demo code:

Mike Zhang[MSFT]
MSDN Community Support | Feedback to us

Thanks for your reply

How do I exactly apply this soluction?, I've tried:

Dim Ctrl as New CustomTabControl

but it just doesn't change anything, borders remain the same.

It will let you see the effect at run time, instead of design time.

When you delete "&& !DesignMode", you can see that the board is gone, this is the effect, we only can do Windows Tab control supported, since the TabControl form Windows Form is inherited form the Windows Tab Control:(I just use Visual Studio 2010 designer to demonstrate this, since I have no Visual Studio2003)

Mike Zhang[MSFT]
MSDN Community Support | Feedback to us

Well, I'm still using VS2008 because VS2010 is toooo buggy . not to mention that it's useless in x64

I've tried your solution and yes, white borders are gone but the tabs disappear. I'm just looking how to get rid of the borders, any ideas?

Thanks in advance.

I think we can modify the rectangle like this, I'm not sure if the Margin is describing the blank space at the boarder, but it looks like so:

Mike Zhang[MSFT]
MSDN Community Support | Feedback to us

Thanks Mike, that seems to be a nice solution, although it would be nicer to have the border as a black line, with this solution there are no black borders around

I think it should look like this (Since VS was launched):

Any ideas to have it work like that ?

That's needing some correction, in my eyes, I think this is fine like this:

Mike Zhang[MSFT]
MSDN Community Support | Feedback to us

Well, if I do it that way, the borders are drawn ok, but the white border reappears =(

But, to control the boarder is just use this RECT, this is the screenshot, it demonstrate what it looks like in my local side. And I only correct the Right, Top, Bottom, those three sides.

So it means that I will not be able to get rid of the white borders if I add the black lines as margins ? or in other words, if I want the black borders there's no way to get rid of the white one?

At least, it works, after I set it as I told you in my posts, you can see the screenshot in my above post.

In my mind after the correction like I did, it should work.

Can you share your project to me?

Or can you help me to test it in your side?

I really want to help you clear about this question, you can see it really did what I said when it run in my side.

If it cannot run in your side, can you test it on another computer?

If there's any concern, please feel free to let me know.

Mike Zhang[MSFT]
MSDN Community Support | Feedback to us

Mike, thanks for your help, I tested it in my side (downloaded your project) and it still the same, take a close look at the picture, I still see the white borders:

Here's my project, it is in VB:

In fact, the result on the mathematical is right, so it should be like what we expected.

After I set the back color to black, I find the issue as you described, sorry for that I have not found it before I use the black as the back color.

And I have to admit that these are what I can do for you.

Have a nice day!

Mike Zhang[MSFT]
MSDN Community Support | Feedback to us

Thanks for your time Mike, I'll do it as you suggested.

Have a nice day too =)

You're welcome, G.Waters!

Mike Zhang[MSFT]
MSDN Community Support | Feedback to us

Another question, can you past the MS Connect case link into this thread?

Mike Zhang[MSFT]
MSDN Community Support | Feedback to us

Sure Mike, this is it:

Well Mike, I think Microsoft was fast enough and they decided to close the issue and clasified as "Won't Fix". Really sad that the most important software company in the world just don't give a damn about its customers.

I just can't understand why it does not apply a quality control on its products, I mean, isn't that an obvious design mistake ?, since I started to use VS I noticed this problem but naively thought it would be fixed in the future. I was wrong.

If I were the VS team leader, I would never accepted TabControl the way it is now.

Элемент управления WPF TabControl позволяет разбить ваш интерфейс на несколько разных зон, которые можно выбрать нажав на заголовок, который обычно находится сверху элемента управления. Вкладки широко используются в приложениях для Windows, и даже в интерфейсах самой Windows, таких как диалоговые окна для выбора файлов, папок и так далее.

Как и в случае с другими элементами управления WPF, начать работу с вкладками при помощи TabControl несложно. Вот несколько простых примеров:


Как видите, каждой вкладке соответствует элемент TabItem, текст которой задается свойством Header. Элемент TabItem наследует класс ContentControl, и это значит, что вы можете определить в качестве содержания одиночный элемент, который отображается, когда вкладка активна (как на снимке экрана). Я использую в этом примере элемент управления Label, но при желании вы можете разместить внутри вкладки несколько элементов, просто используя для этого панели с дочерними элементами внутри.

Customized headers

Повторюсь, WPF обеспечивает чрезвычайную гибкость, когда вы хотите настроить внешний вид ваших вкладок. Само собой, содержание вкладок можно отобразить совершенно разными способами, но это же касается и заголовков! Свойство Header также можно наполнить различными элементами управления и мы воспользуемся этим в следующем примере:


Вариантов разметки так много, что это может показаться слишком сложным, но, стоит только начать и все окажется очень просто. Теперь в каждой вкладке есть элемент TabControl.Header содержащий StackPanel, в котором в свою очередь находятся элементы управления Image и TextBlock. Это позволяет прикрепить к каждой вкладке свою картинку, выбрать цвет текста (еще можно выбрать полужирное, курсивное начертание или другой размер).

Способы управления TabControl

Иногда может возникнуть необходимость программно управлять выбором вкладок или, может быть, узнать какая из них активна. В WPF TabControl для этого есть несколько способов, включая SelectedIndex и SelectedItem. В следующем примере я добавил несколько кнопок в первый из них, что позволяет управлять поведением TabControl:


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

Первые две кнопки, чтобы определить, где мы находимся используют свойство SelectedIndex, а затем мы увеличиваем или уменьшаем это значение, проверяя, не выходит ли индекс за пределы. Третья кнопка получает ссылку на активную вкладку с помощью свойства SelectedItem. Как можно заметить, ее необходимо привести к типу TabItem, чтобы получить доступ к свойству Header, так как SelectedProperty по умолчанию имеет тип object.

Резюме

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

Создать свой стиль TabControl
Здравствуйте. Нужно создать свой TabControl точнее свой стиль к TabControl. Стиль вот такой: В.

Как реализовать нестандартный TabControl в WPF
Во вложении схематичное изображение необходимого результата. Проблем 2: 1) Как расположить.

Нестандартный стиль формы
Можно сделать форму нестандартного стиля?

Нестандартный стиль для кнопок
Здраствуйте. Подскажите мне идею как можно сделать свои кнопки. Имеется в виду нестондартный стиль.

В WinForms нет стилей у контролов. Подобное можно получить юзерконтролом. Радиокнопка лишняя, достаточно подчёркивания. Alexandr_7, 1) переопределяешь отрисовку элементов tabcontrol и рисуешь их так как нужно тебе
2) пишешь полностью свой tabcontrol с блэкджеком и . как душе угодно Да я в графике плохо разбираюсь так что врядле смогу. ну тогда ищи готовые решения и "подделывай" под себя, благо в сети готовых решений с кодом уйма. Да можно и без радиокнопок. Правдо с радиокнопками а точнее их стилем было бы интереснее. В инете я не нашел подходящего. Мне самое главное чтобы мождно было менять цвет Tab Control а не только TabItem просто фон программы черный.
Можно кстати вот такой вариант

Может кто знает подходящий TabControl в принципе можно обойтись и без него но во 1 так не эфективно а во 2 не удобно и причина тому переключать панели неудобно. Вот если бы был таб контрол которой при разработке можно было переключать вкладки но после компиляции в запущенном приложении кнопок для переключения между вкладками не было видно. Может кто знает есть ли возможность спрятать кнопки переключения между вкладками и и переключать программно.
+ Также нужно чтоб таб контролу можнол было менять цвет а нет только цвет табитемов Так может кто наконец ответит. Раньше я использовал Tab Control Ex но теперь он больше не работает после очередного обновления Visual Studio
Пожалуйста очень нужно Если вдруг не собираетесь сидеть и ждать, что за вас сделают, тут ответ: Убрать рамку (бордюр) TabControl По сути тут не очень много страниц, лично я делал через Panel, кнопками скривал не нужние панели а нужную показывал, ничем не хуже, а если их слишком много bringtofront поможет показать именно нужную Да проблема в том чтобы поменять цвет Tab Control хотя пускай по стандарту будет Alexandr_7, лучше создай свой TabControl, ибо он никак не поможет тебе!

RoxTeam, стесняюсь спросить, а 'он' - это кто?

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Изменить стиль заголовка вкладок у TabControl
Здравствуйте! Необходимо немного видоизменить заголовок вкладок у TabControl, добавить кнопку для.


Реализовать, чтобы к TabItem во вложенном TabControl применялся тот же стиль, но с измененными цветами
Добрый день! Только второй день работаю с Wpf и столкнулась с небольшой проблемой. В редакторе.


Создание TabControl в TabPage, а в этом TabControl создать RichTextBox
Нужно создать TextBox и кнопку,при нажатии на кнопку в уже созданом TabControl создаётся новая.


MVVM. Если окно содержит 1 TabControl, который в себе содержит много вкладок и в каждой может быть другой TabControl с вкладками
Я сделал так: Создал UserControl, в него поместил TabControl создал вкладки, во вкладки начал.


В один момент возникла задача сделать TabControl по отрисованному дизайну, с вкладками с левой стороны. Сложность была в том, что проект был уже написан с использованием winform, и переделывать его целиком не хотелось. Попытался реализовать эту задачу средствами класического TabControl, но встретился со множеством проблем, связанных с этим.

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


Но мне нужно было, чтобы надписи шли гаризонтально. Изучив чуть глубже данный контрол, решил воспользоваться параметром DrawMode=OwnerDrawFixed. Все надписи стерлись, и на кнопке стало возможным писать и рисовать. Но остался фон самой кнопки, который полностью закрасить не удалось.
Следующим шагом поменял Appearance c Normal на Buttons, был еще вариант FlatButtons, но через конструктор его поставить не удалось, а выставление в коде ни на что не повлияло.
В режиме Buttons вылезла такая ерунда:


На картинке видно, что между кнопками и набором TabPages появилось расстояние. Отуда оно взялось и каким параметром регулируется, мне выяснить так и не удалось.

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

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

Постараюсь подробно описать все, что для этого пришлось сделать.

Шаг 1
Для начала в проекте нужно создать новый котрол. Для этого в панели Solution Explorer кликаем правой кнопкой по проекту, далее Add->Component, в открывшейся панели вводим имя нового контрола (у меня это NewTabControl)

Шаг 2
После создания открываем код созданного контрола. В коде делаем следующие правки:
дописываем
using System.Windows.Forms;
using System.Drawing;

Создаем три класса, наследуя их от классов стандартных контролов.

Класс нового TabControl
public partial class NewTabControl: System.Windows.Forms.TabControl

Класс нового контрола
public class NewTabPanel: System.Windows.Forms.Panel

Класс одной вкладки
public class PanelTP: System.Windows.Forms.Panel

Теперь нам нужно перезагрузить следующий метод в классе NewTabControl:

Данное действие позволит нам скрыть стандартные вкладки.

Теперь нам нужно связать все классы между собой. Не буду описывать весь код, его я приложу к данной статье. Опишу только самые интересные моменты.

Шаг 3
Компонуем все элементы в классе NewTabPanel:


Шаг 4
Теперь можно задать формат, как будет выглядеть сама вкладка.
На данном этапе вы можете сами расположить текст, картинку или любой другой элемент на будущей вкладке. А также задать размер и фон самой вкладки.
У себя я вывожу иконку и название вкладки.

В классе PanelTP создаем метод:


Шаг 5
Не буду описывать методы, обрабатывающие события, они подробно описаны в приложенном проекте. Перейду к применению.


После того как мы все сохранили, на панели Toolbox появятся новые компоненты

Теперь мы можем его разместить в нашей форме как захотим.
Чтобы добавить вкладку используем:

Где id — это номер вкадки

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

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

Исходники проекта можно скачать тут.
Бинарник тут.

Читайте также: