как добавить кнопку на вкладки tabcontrol

Все, что я хочу, показано на картинке ниже. Как я мог этого добиться?

введите здесь описание изображения

как добавить какие-либо кнопки на вкладки tabcontrol? Или это настраиваемые элементы управления, которые мне нужно создать?

Первое фото из визуальной студии, второе фото из фотошопа.

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


person Community    schedule 02.10.2013    source источник
comment
См. Реализация кнопки "Закрыть" на вкладках. Однако в таких ситуациях обычно рекомендуется WPF.   -  person LarsTech    schedule 02.10.2013


Ответы (2)


Первый показанный вами пример сделан с использованием WPF, что довольно легко сделать, если вы уже знакомы с WPF. Второй пример выглядит как Photoshop, который, скорее всего, является пользовательским элементом управления C++ Win32.

Но если вы работаете с WinForms, вы обычно не можете делать такие настройки со стандартными элементами управления. Вы можете написать свой собственный TabControl, наследуя от Control и обрабатывая рисование и ввод самостоятельно, что я делал в прошлом, но это тоже много работы. Особенно, если учесть, что для каждой вкладки приходится управлять списком дочерних элементов управления. И что вам может понадобиться поддержка во время разработки для перетаскивания других элементов управления и панелей на каждую вкладку и изменения свойств вкладки в Visual Studio Designer. Ничего из этого не будет сделано за вас, если вы пойдете по этому пути.

Если вы не хотите изучать WPF и не хотите тратить неделю (недели), которые могут потребоваться на написание надежного пользовательского элемента управления, вы можете обратиться к таким компаниям, как Telerik, DevExpress, Infragistics и т. д., вы может быть в состоянии просто заплатить за библиотеку управления, которая TabControl уже делает это.

person Trevor Elliott    schedule 02.10.2013
comment
это был действительно полезный ответ, и нет, я не хочу платить, я лучше потратил неделю на написание такого пользовательского контроллера, чем заплатить за него 1 пенни, спасибо, приму, когда это возможно - person ; 02.10.2013
comment
Не указывайте это в своем резюме. - person rheitzman; 03.10.2013

Вот тупой способ сделать это...

Добавьте несколько пробелов и X в конце имени вкладки. В щелчке даже захватите мышь X и посмотрите, находится ли она над X.

Private Sub TabControl1_Click(sender As System.Object, e As System.EventArgs) Handles TabControl1.Click
    Dim m As System.Windows.Forms.MouseEventArgs = DirectCast(e, System.Windows.Forms.MouseEventArgs)
    Dim tabWidth As Integer =
        Convert.ToInt32(Me.CreateGraphics().MeasureString(TabControl1.SelectedTab.Text, TabControl1.Font).Width)
    Debug.Print(m.X & " " & m.Y & " " & tabWidth)
End Sub

Sub/Func необходим для расчета горячих точек с учетом отображаемых вкладок. Переберите видимые вкладки и используйте tabWidth, как показано выше, чтобы выполнить математику.

person rheitzman    schedule 03.10.2013