TabControl TabPage添加关闭按钮
自定义控件代码如下:
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添加关闭按钮的更多相关文章
- C# 重绘tabControl,添加关闭按钮(页签)
C# 重绘tabControl,添加关闭按钮(页签) 调用方法 参数: /// <summary> /// 初始化 /// </summary> /// <param n ...
- C# 重绘tabControl,添加关闭按钮(续)
在上一篇随笔中,添加关闭按钮是可以实现 ,但细心一点就会发现,每次关闭一个选项卡,tableControl都会自动跳到第一个页面,显然 这不是我们想要的,为此,我修改了部分的代码.除此之外,我还添加了 ...
- 向tabcontrol中添加form
昨天花了一天的时间去找一个错误,关系是这样的,我添加一个tabcontrol就叫tc1好了,然后在tc1中再动态添加一个父窗体l叫form1,要把form1添加进tabcontrol就要先新建一个ta ...
- TabControl里面添加From
private void dynamicDll() { string dllName = "dll"; Assembly ass = Assembly.Load(dllName); ...
- TabControl重写,添加关闭按钮
class userTabControl : TabControl { const int CLOSE_SIZE = 15; protected override void OnInvalidated ...
- Tabcontrol动态添加TabPage(获取或设置当前选项卡及其属性)
http://blog.csdn.net/xiongxyt2/article/details/6920575 •MultiLine 属性用true 或false来确定是否可以多行显示 •Appeara ...
- 转: 向tabControl中添加一个Form(C#)
- C# Winform TabControl 双击关闭TabPage
在使用TabControl控件时,需要考虑自动创建的TabPage页实现——关闭功能 思路一:自定义TabControl控件,添加关闭按钮 思路二:TabControl控件TabPage显示ToolT ...
- C# winform 中 TabControl 动态显示 TabPage
在winform应用中,tabcontrol是一个很好的控件,可以根据需求提供多个选项卡(TabPages),但是有一个问题是当某个项目需要多个选项卡,但是不同的功能要求显示不同的选项卡,其他的非该功 ...
随机推荐
- AMAZON数据集
http://snap.stanford.edu/data/amazon/productGraph/categoryFiles/
- Python学习笔记第二十三周(Flask架构)
目录: 一.变量引用 内容: 备注:PyCharm小技巧,comm+alt+l 自动修改格式,comm+alt+return 向上添加新行 一.变量引用 1.url生成 from flask im ...
- 【leetcode】290. Word Pattern
problem 290. Word Pattern 多理解理解题意!!! 不过博主还是不理解,应该比较的是单词的首字母和pattern的顺序是否一致.疑惑!知道的可以分享一下下哈- 之前理解有误,应该 ...
- 【集成学习】sklearn中xgboost模块的XGBClassifier函数
# 常规参数 booster gbtree 树模型做为基分类器(默认) gbliner 线性模型做为基分类器 silent silent=0时,不输出中间过程(默认) silent=1时,输出中间过程 ...
- Mariadb使用xtrabackup工具备份数据脚本
#!/bin/bash#这个脚本用来备份SQL文件: sql_home="/home/mysql"sql_bak_log="$sql_home/xtrabackup.lo ...
- flask中的模型
1.什么是模型 模型,是根据数据库中表的结构而创建出来的class.每一张表对应到编程语言中,就是一个class表中的每一个列对应到编程语言中就class中的一个属性. 2.ORM的三大特征 1.数据 ...
- SQLAlchemy中表结构的一对多
from flask import Flask from flask_sqlalchemy import SQLAlchemy import pymysql pymysql.install_as_My ...
- 纯C:url base64
纯代码,来自互联网 base64.h #ifndef __BASE64_H__ #define __BASE64_H__ #ifdef __cplusplus extern "C" ...
- CF1132.Educational Codeforces Round 61(简单题解)
A .Regular Bracket Sequence 题意:给定“((” , “()” , “)(”, “))”四种,问是否可以组成合法括号匹配 思路:设四种是ABCD,B可以不用管,而C在A或 ...
- event.currentTarget和event.target的区别
currentTarget始终是监听事件者,而target是事件的真正发出者.