代码
1
using
System;
2
using
System.Collections.Generic;
3
using
System.ComponentModel;
4
using
System.Data;
5
using
System.Drawing;
6
using
System.Linq;
7
using
System.Text;
8
using
System.Windows.Forms;
9
10
11
namespace
TabControlTest
12
{
13
public
partial
class
Form1 : Form
14
{
15
public
Form1()
16
{
17
InitializeComponent();
18
}
19
20
const
int
CLOSE_SIZE
=
15
;
21
//tabPage标签图片
22
Bitmap image
=
new
Bitmap(
"
E:\\1\\2.jpg
"
);
23
//
绘制“X”号即关闭按钮
24
private
void
MainTabControl_DrawItem(
object
sender, DrawItemEventArgs e)
25
{
26
27
try
28
{
29
Rectangle myTabRect
=
this
.MainTabControl.GetTabRect(e.Index);
30
31
//
先添加TabPage属性
32
e.Graphics.DrawString(
this
.MainTabControl.TabPages[e.Index].Text
33
,
this
.Font, SystemBrushes.ControlText, myTabRect.X
+
2
, myTabRect.Y
+
2
);
34
35
//
再画一个矩形框
36
using
(Pen p
=
new
Pen(Color.White))
37
{
38
myTabRect.Offset(myTabRect.Width
-
(CLOSE_SIZE
+
3
),
2
);
39
myTabRect.Width
=
CLOSE_SIZE;
40
myTabRect.Height
=
CLOSE_SIZE;
41
e.Graphics.DrawRectangle(p, myTabRect);
42
43
}
44
45
//
填充矩形框
46
Color recColor
=
e.State
==
DrawItemState.Selected
?
Color.White : Color.White;
47
using
(Brush b
=
new
SolidBrush(recColor))
48
{
49
e.Graphics.FillRectangle(b, myTabRect);
50
}
51
52
//
画关闭符号
53
using
(Pen objpen
=
new
Pen(Color.Black))
54
{
55
//
"\"线
56
Point p1
=
new
Point(myTabRect.X
+
3
, myTabRect.Y
+
3
);
57
Point p2
=
new
Point(myTabRect.X
+
myTabRect.Width
-
3
, myTabRect.Y
+
myTabRect.Height
-
3
);
58
e.Graphics.DrawLine(objpen, p1, p2);
59
60
//
"/"线
61
Point p3
=
new
Point(myTabRect.X
+
3
, myTabRect.Y
+
myTabRect.Height
-
3
);
62
Point p4
=
new
Point(myTabRect.X
+
myTabRect.Width
-
3
, myTabRect.Y
+
3
);
63
e.Graphics.DrawLine(objpen, p3, p4);
64
///
/=============================================
65
Bitmap bt
=
new
Bitmap(image);
66
Point p5
=
new
Point(myTabRect.X
-
50
,
4
);
67
e.Graphics.DrawImage(bt, p5);
68
//
e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text, this.Font, objpen.Brush, p5);
69
}
70
71
72
//
绘制小图标
73
//
==============================================================================
74
//
Bitmap bt = new Bitmap("E:\\1\\2.jpg");
75
//
Point p5 = new Point(4, 4);
76
///
/e.Graphics.DrawImage(bt, e.Bounds);
77
//
e.Graphics.DrawImage(bt, p5);
78
//
Pen pt = new Pen(Color.Red);
79
///
/e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text, this.Font, pt.Brush, e.Bounds);
80
//
e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text, this.Font, pt.Brush, p5);
81
82
e.Graphics.Dispose();
83
}
84
catch
(Exception)
85
{
86
87
}
88
89
90
}
91
//
=======================================================================
92
93
//
关闭按钮功能
94
private
void
MainTabControl_MouseDown(
object
sender, MouseEventArgs e)
95
{
96
if
(e.Button
==
MouseButtons.Left)
97
{
98
int
x
=
e.X, y
=
e.Y;
99
100
//
计算关闭区域
101
Rectangle myTabRect
=
this
.MainTabControl.GetTabRect(
this
.MainTabControl.SelectedIndex);
102
103
myTabRect.Offset(myTabRect.Width
-
(CLOSE_SIZE
+
3
),
2
);
104
myTabRect.Width
=
CLOSE_SIZE;
105
myTabRect.Height
=
CLOSE_SIZE;
106
107
//
如果鼠标在区域内就关闭选项卡
108
bool
isClose
=
x
>
myTabRect.X
&&
x
<
myTabRect.Right
109
&&
y
>
myTabRect.Y
&&
y
<
myTabRect.Bottom;
110
111
if
(isClose
==
true
)
112
{
113
this
.MainTabControl.TabPages.Remove(
this
.MainTabControl.SelectedTab);
114
}
115
}
116
117
118
}
119
//
初始化页面
120
private
void
Form1_Load(
object
sender, EventArgs e)
121
{
122
//
清空控件
123
//
this.MainTabControl.TabPages.Clear();
124
//
绘制的方式OwnerDrawFixed表示由窗体绘制大小也一样
125
this
.MainTabControl.DrawMode
=
TabDrawMode.OwnerDrawFixed;
126
this
.MainTabControl.Padding
=
new
System.Drawing.Point(CLOSE_SIZE, CLOSE_SIZE);
127
this
.MainTabControl.DrawItem
+=
new
DrawItemEventHandler(
this
.MainTabControl_DrawItem);
128
this
.MainTabControl.MouseDown
+=
new
System.Windows.Forms.MouseEventHandler(
this
.MainTabControl_MouseDown);
129
}
130
131
//
添加新的tabPage并修改所有tabPage标签上面的图片
132
private
void
button1_Click(
object
sender, EventArgs e)
133
{
134
TabPage tabtage
=
new
TabPage ();
135
MainTabControl.TabPages.Add(tabtage);
136
MainTabControl.SelectedTab
=
tabtage;
137
image
=
new
Bitmap(
"
E:\\1\\3.jpg
"
);
138
139
140
}
141
//
关闭选中的tabPage
142
private
void
button2_Click(
object
sender, EventArgs e)
143
{
144
MainTabControl.TabPages.Remove(MainTabControl.SelectedTab);
145
}
146
147
148
149
}
150
}
151
转载于:https://www.cnblogs.com/angleSJW/archive/2009/12/11/1622225.html
相关资源:font.zip
转载请注明原文地址: https://win8.8miu.com/read-26391.html