Imports Softelvdm.Controls Imports Softelvdm.SftTabsNET Public Class Form1 Dim imgClose As Image = Bitmap.FromFile("..\\..\\Close1_16x16.png") Dim imgCloseHover As Image = Bitmap.FromFile("..\\..\\Close1Hover_16x16.png") Dim imgNew As Image = Bitmap.FromFile("..\\..\\NewTab1_16x16.png") Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' This sample demonstrates how to use a "New Tab" and close buttons in each tab. ' The "close button" isn't really a button, instead we use an image. ' To prepare for this sample, create a new project with a blank form and add ' a SftTabs/NET control named sftTabs1. ' In addition, adjust the above FromFile methods to use a (small) bitmap ' that is located on your system. sftTabs1.Initializing = True sftTabs1.FocusHighlightStyle = FocusHighlightStyleEnum.None sftTabs1.Scrolling.Style = ScrollingStyle.AlwaysLeft InsertTab("Tab &1", sftTabs1.TabCollection.Count) InsertTab("Tab &2", sftTabs1.TabCollection.Count) ' Add "New" tab Dim tb As TabClass = sftTabs1.TabCollection.Add() tb.ToolTip = "Add a new tab" tb.Image = imgNew tb.ImagePart.VisibleAppearance = VisibleAppearanceEnum.OwnerHot tb.ImagePart.PartAlignment = PartAlignmentEnum.Center ' Make the first tab active sftTabs1.Current = 0 ' Update button images UpdateCloseButtonImages() AddHandler sftTabs1.Switched, AddressOf sftTabs1_Switched sftTabs1.Initializing = False End Sub Private Sub sftTabs1_Switched(ByVal sender As System.Object, ByVal e As System.EventArgs) If sftTabs1.Current = sftTabs1.Count - 1 Then ' We switched to the last tab, which is the "New Tab" tab. Insert a new tab Dim tbNew As TabClass = InsertTab("New&" + sftTabs1.Count.ToString(), sftTabs1.Current) sftTabs1.Current = tbNew.Index ' Make it the current tab UpdateCloseButtonImages() End If End Sub ' Insert a new tab Private Function InsertTab(ByVal strLabel As String, ByVal index As Integer) As TabClass Dim tb As TabClass = sftTabs1.TabCollection.Insert(index) tb.Text = strLabel tb.ToolTip = strLabel.Replace("&", "") tb.TextPart.PartAlignment = PartAlignmentEnum.Center tb.TextPart.HAlign = HAlignmentOptionalEnum.Center tb.Image = imgClose tb.ImagePart.HoverImage = imgCloseHover tb.ImagePart.PartAlignment = PartAlignmentEnum.Center tb.ImagePart.VisibleAppearance = VisibleAppearanceEnum.OwnerSelectedOrHide AddHandler tb.ImagePart.Action, AddressOf ImagePart_Action Return tb End Function ' The close image of a tab was clicked Private Sub ImagePart_Action(ByVal sender As System.Object, ByVal e As ActionEventArgs) Dim tb As TabClass = e.Part.PartOwner Dim index As Integer = tb.Index sftTabs1.TabCollection.RemoveAt(index) index = index - 1 If index >= 0 Then sftTabs1.Current = index End If UpdateCloseButtonImages() End Sub ' We have to make sure that if there is only one tab, we can't close ' that tab. We do that by simply hiding the close button images Private Sub UpdateCloseButtonImages() ' If we have more than 2 tabs, we don't need to hide the close button images Dim hide As Boolean = (sftTabs1.Count <= 2) For Each tb As TabClass In sftTabs1.TabCollection If tb.ImagePart.Image.Equals(imgClose) Then ' this is a close button image If hide Then tb.ImagePart.VisibleAppearance = VisibleAppearanceEnum.Never Else tb.ImagePart.VisibleAppearance = VisibleAppearanceEnum.OwnerSelectedOrHide End If End If Next End Sub End Class