當前位置:編程學習大全網 - 源碼下載 - c#.請問如何給tancontrol中的tabpage添加壹個關閉事件,讓在關閉tabpage時發生該事件。。

c#.請問如何給tancontrol中的tabpage添加壹個關閉事件,讓在關閉tabpage時發生該事件。。

C#重繪TabControl的Tabpage標簽,添加圖片及關閉按鈕

以下就是C#重繪TabControl控件的源碼:

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 }

C#重繪TabControl的Tabpage標簽,添加圖片及關閉按鈕就像妳介紹到這裏了,希望對妳有所幫助。

  • 上一篇:友情鏈接系統源碼
  • 下一篇:60分鐘技術指標是什麽意思?怎麽用?
  • copyright 2024編程學習大全網