1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
Public Class Form1
'nécessite un Form1 un TabControl1 et un fichier c:\close.gif
Dim _imgHitArea As Point = New Point(13, 2)
Dim _imageLocation As Point = New Point(15, 5)
Public Sub New()
InitializeComponent()
'Set the Mode of Drawing as Owner Drawn
TabControl1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed
'Add the Handler to draw the Image on Tab Pages
AddHandler TabControl1.DrawItem, AddressOf TabControl1_DrawItem
End Sub
Private Sub TabControl1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs)
Try
'Close Image to draw
Dim img As Image = New Bitmap("C:\Close.gif")
Dim r As Rectangle = e.Bounds
r = Me.TabControl1.GetTabRect(e.Index)
r.Offset(2, 2)
Dim TitleBrush As Brush = New SolidBrush(Color.Black)
Dim f As Font = Me.Font
Dim title As String = Me.TabControl1.TabPages(e.Index).Text
e.Graphics.DrawString(title, f, TitleBrush, New PointF(r.X, r.Y))
e.Graphics.DrawImage(img, New Point(r.X + (Me.TabControl1.GetTabRect(e.Index).Width - _imageLocation.X), _imageLocation.Y))
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub TabControl1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseClick
Dim tc As TabControl = CType(sender, TabControl)
Dim p As Point = e.Location
Dim _tabWidth As Integer
_tabWidth = Me.TabControl1.GetTabRect(tc.SelectedIndex).Width - (_imgHitArea.X)
Dim r As Rectangle = Me.TabControl1.GetTabRect(tc.SelectedIndex)
r.Offset(_tabWidth, _imgHitArea.Y)
r.Width = 16
r.Height = 16
If r.Contains(p) Then
Dim TabP As TabPage = DirectCast(tc.TabPages.Item(tc.SelectedIndex), TabPage)
tc.TabPages.Remove(TabP)
End If
End Sub
End Class |
Partager