自定义控件代码如下:

using System.Drawing;
using System.Windows.Forms; namespace Demo.UC
{
public class KKTab : TabControl
{
private int IconWOrH = 16;
private Image icon = null; public KKTab()
: base()
{
this.DrawMode = TabDrawMode.OwnerDrawFixed; icon = Demo.Properties.Resources.close;
IconWOrH = icon.Width;
IconWOrH = icon.Height;
} protected override void OnDrawItem(DrawItemEventArgs e)
{
Graphics g = e.Graphics;
Rectangle r = GetTabRect(e.Index);
if (e.Index == this.SelectedIndex) //当前选中的Tab页,设置不同的样式以示选中
{
Brush selected_color = Brushes.SteelBlue; //选中的项的背景色
g.FillRectangle(selected_color, r); //改变选项卡标签的背景色
string title = this.TabPages[e.Index].Text;
g.DrawString(title, this.Font, new SolidBrush(Color.Black), new PointF(r.X , r.Y + 5));//PointF选项卡标题的位置
r.Offset(r.Width - IconWOrH, 2);
g.DrawImage(icon, new Point(r.X, r.Y));//选项卡上的图标的位置 fntTab = new System.Drawing.Font(e.Font, FontStyle.Bold);
}
else//非选中的
{
Brush selected_color = Brushes.AliceBlue; //选中的项的背景色
g.FillRectangle(selected_color, r); //改变选项卡标签的背景色
string title = this.TabPages[e.Index].Text+" ";
g.DrawString(title, this.Font, new SolidBrush(Color.Black), new PointF(r.X , r.Y + 5));//PointF选项卡标题的位置
r.Offset(r.Width - IconWOrH, 2);
g.DrawImage(icon, new Point(r.X, r.Y));//选项卡上的图标的位置
}
} protected override void OnMouseClick(MouseEventArgs e)
{
Point point = e.Location;
Rectangle r = GetTabRect(this.SelectedIndex);
r.Offset(r.Width - IconWOrH - 3, 2);
r.Width = IconWOrH;
r.Height = IconWOrH;
if (r.Contains(point)) this.TabPages.RemoveAt(this.SelectedIndex);
}
}
}

注意:使用方式:界面加载需处理TabPage Text属性

 foreach (TabPage item in this.kkTab1.TabPages)
{
item.Text = item.Text + " ";
}

运行效果如下:

TabControl TabPage添加关闭按钮的更多相关文章

  1. C# 重绘tabControl,添加关闭按钮(页签)

    C# 重绘tabControl,添加关闭按钮(页签) 调用方法 参数: /// <summary> /// 初始化 /// </summary> /// <param n ...

  2. C# 重绘tabControl,添加关闭按钮(续)

    在上一篇随笔中,添加关闭按钮是可以实现 ,但细心一点就会发现,每次关闭一个选项卡,tableControl都会自动跳到第一个页面,显然 这不是我们想要的,为此,我修改了部分的代码.除此之外,我还添加了 ...

  3. 向tabcontrol中添加form

    昨天花了一天的时间去找一个错误,关系是这样的,我添加一个tabcontrol就叫tc1好了,然后在tc1中再动态添加一个父窗体l叫form1,要把form1添加进tabcontrol就要先新建一个ta ...

  4. TabControl里面添加From

    private void dynamicDll() { string dllName = "dll"; Assembly ass = Assembly.Load(dllName); ...

  5. TabControl重写,添加关闭按钮

    class userTabControl : TabControl { const int CLOSE_SIZE = 15; protected override void OnInvalidated ...

  6. Tabcontrol动态添加TabPage(获取或设置当前选项卡及其属性)

    http://blog.csdn.net/xiongxyt2/article/details/6920575 •MultiLine 属性用true 或false来确定是否可以多行显示 •Appeara ...

  7. 转: 向tabControl中添加一个Form(C#)

  8. C# Winform TabControl 双击关闭TabPage

    在使用TabControl控件时,需要考虑自动创建的TabPage页实现——关闭功能 思路一:自定义TabControl控件,添加关闭按钮 思路二:TabControl控件TabPage显示ToolT ...

  9. C# winform 中 TabControl 动态显示 TabPage

    在winform应用中,tabcontrol是一个很好的控件,可以根据需求提供多个选项卡(TabPages),但是有一个问题是当某个项目需要多个选项卡,但是不同的功能要求显示不同的选项卡,其他的非该功 ...

随机推荐

  1. Django之模型层-单表操作

    单表操作 添加记录 方式1 # 先实例化models中的对象,按照定义的语句规则传入参数,然后使用对象调用save()保存到数据库 book_obj = Book(id=1,title='python ...

  2. Unity 项目中委托Delegate用法案例

    Unity中Delegate的用法场景 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar - ...

  3. 测试那些事儿—浅谈TCP/IP协议

    TCP/IP协议是一系列网络协议的总和,是构成网络通信的核心骨架. TCP/IP的工作原理通俗的讲就是一个主机的数据要经过哪些过程才能发送到对方的主机上. TCP/IP协议采用四层结构,分别为应用层, ...

  4. Readability Assessment for Text Simplification -paper

    https://pdfs.semanticscholar.org/e43a/3c3c032cf3c70875c4193f8f8818531857b2.pdf 1.introduction在Brazil ...

  5. U盘支持启动windows和Linux

    1.我是利用大白菜先按照普通方法制作可以引导windows的启动盘,这个没什么好说了,就不多说了. 2.在U盘的根目录下添加一个放Ubuntu镜像的文件夹,然后将Ubuntu的iso文件拷贝至这个目录 ...

  6. 下载B站、秒拍等视频网站视频

    需要一个FVD Downloader(插件) 安装过程很简单,会浏览器安装插件的就不多说了!

  7. 【java高级编程】jdk自带事件模型编程接口

    事件类 java.util.EventObject java.beans.PropertyChangeEvent 事件监听接口 java.util.EventListener java.beans.P ...

  8. 【shell编程】之基础知识-常用命令

    一.Shell echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出.命令格式: echo string 您可以使用echo实现更复杂的输出格式控制. ...

  9. 取消svn关联文件夹

    svn没有自带取消svn关联功能,所以我们需要以下脚本 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classe ...

  10. haproxy prometheus 监控docker-compose 运行试用

    haproxy prometheus 的监控metrics 使用的是exporter ,因为haproxy 对于状态统计报告处理的 比较好,我们可以了stats 同时支持一个csv的api 接口,所以 ...