TabControl添加关闭按钮
2015-12-24 10:40
267 查看
TabControl添加关闭按钮
原文:/article/4703864.htmlconst int CLOSE_SIZE = 4; //清空控件 this.MainTabControl.TabPages.Clear(); //绘制的方式OwnerDrawFixed表示由窗体绘制大小也一样 this.MainTabControl.DrawMode = TabDrawMode.OwnerDrawFixed; this.MainTabControl.Padding = new System.Drawing.Point(CLOSE_SIZE, CLOSE_SIZE); this.MainTabControl.DrawItem += new DrawItemEventHandler(this.tabControl2_DrawItem); this.MainTabControl.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tabControl2_MouseDown); private void tabControl2_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e) { try { Rectangle myTabRect = this.MainTabControl.GetTabRect(e.Index); //先添加TabPage属性 e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text , this.Font, SystemBrushes.ControlText, myTabRect.X + 2, myTabRect.Y + 2); //再画一个矩形框 using (Pen p = new Pen(Color.Red)) { myTabRect.Offset(myTabRect.Width - (CLOSE_SIZE + 3), 2); myTabRect.Width = CLOSE_SIZE; myTabRect.Height = CLOSE_SIZE; e.Graphics.DrawRectangle(p, myTabRect); } //填充矩形框 Color recColor = e.State == DrawItemState.Selected ? Color.Red : Color.Red; using (Brush b = new SolidBrush(recColor)) { e.Graphics.FillRectangle(b, myTabRect); } //画关闭符号 using (Pen objpen = new Pen(Color.Red)) { //"\"线 Point p1 = new Point(myTabRect.X + 3, myTabRect.Y + 3); Point p2 = new Point(myTabRect.X + myTabRect.Width - 3, myTabRect.Y + myTabRect.Height - 3); e.Graphics.DrawLine(objpen , p1, p2); //"/"线 Point p3 = new Point(myTabRect.X + 3, myTabRect.Y + myTabRect.Height - 3); Point p4 = new Point(myTabRect.X + myTabRect.Width - 3, myTabRect.Y + 3); e.Graphics.DrawLine(objpen , p3, p4); } e.Graphics.Dispose(); } catch (Exception) { } } private void tabControl2_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Button == MouseButtons.Left) { int x = e.X, y = e.Y; //计算关闭区域 Rectangle myTabRect = this.MainTabControl.GetTabRect(this.MainTabControl.SelectedIndex); myTabRect.Offset(myTabRect.Width - (CLOSE_SIZE + 3), 2); myTabRect.Width = CLOSE_SIZE; myTabRect.Height = CLOSE_SIZE; //如果鼠标在区域内就关闭选项卡 bool isClose = x > myTabRect.X && x < myTabRect.Right && y > myTabRect.Y && y < myTabRect.Bottom; if (isClose == true) { this.MainTabControl.TabPages.Remove(this.MainTabControl.SelectedTab); } } }
相关文章推荐
- 使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
- CheungSSH国产自动化运维工具开源Web界面
- tinyos学习笔记4--谈谈TestSerial例程的测试
- qt中qmake与ros结合
- js 无缝滚动
- 关于MySQL注释
- 【c/c++】const引用
- 选项切换条--第三方开源--SHSegmentControl
- chai3d中的全局坐标和局部坐标作用
- Spring MVC打印出mysql语句
- IOS--工作总结--post上传文件(以流的方式上传)
- IOS修改圆角图片问题总结
- c#获得程序耗时的方法
- CentOS 7 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
- js最常用 正则表达式
- Android图片加载ImageLoader
- Android EditView 第一次点击默认不输入
- linux非阻塞socket教程
- 1.算法之冒泡排序
- 基于PinnedSectionListView实现联系人通讯录并且点击打电话