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

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

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

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

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

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

2 ответа

Решение

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

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

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

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

Добавьте несколько пробелов и 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, как показано выше, чтобы сделать математику.

Другие вопросы по тегам