日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

重新绘制TabControl的Tabpage标签,添加图片及关闭按钮

發布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重新绘制TabControl的Tabpage标签,添加图片及关闭按钮 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼 ??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

總結

以上是生活随笔為你收集整理的重新绘制TabControl的Tabpage标签,添加图片及关闭按钮的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。