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