C# WinForm 修改TableControl标签
时间:2019-09-29
本文章向大家介绍C# WinForm 修改TableControl标签,主要包括C# WinForm 修改TableControl标签使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在界面设计中,TableControl控件经常使用。默认设置中,Tab的标签的背景色和文字都是无法修改的。接下来我们将学习如何修改TableControl的标签选项。页面效果如下:
简述原理
TableControl项目属性DrawMode,将属性值设定为OwnerDrawFixed后,就可以由用户绘制标签。添加DrawItem事件(用户需要绘制Table时触发),然后在该方法中绘制自定义的标签即可。
关键代码
设置DrawMode属性。
1 this.tabControl_main.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
为TabControl添加DrawItem事件。
1 this.tabControl_main.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.tabControl_main_DrawItem);
设置笔刷。
1 //设置笔刷 2 SolidBrush red = new SolidBrush(Color.Red); // 红色
绘制背景。
1 //绘制红色背景 2 Rectangle rectangleRed = tabControl_main.GetTabRect(0); 3 e.Graphics.FillRectangle(red, rectangleRed);
设置文字对齐属性。
1 //设置文字居中对齐 2 StringFormat stringFormat = new StringFormat(); 3 stringFormat.Alignment = StringAlignment.Center;
设置标签文本。
1 //设置文字字体和文字大小 2 e.Graphics.DrawString(tabControl_main.TabPages[i].Text , new Font("宋体",10) ,black ,rec , stringFormat);
步骤
- 在WinForm页面添加TableControl控件,完成基本的设置。这里设置TableControl控件名称为tabControl_main,并添加三个选项卡,选项卡的关联文本分别为红色、黄色、蓝色。
- 设置DrawMode为OwnerDrawFixed。DrawMode属性的含义为指示是由用户还是由系统绘制标题。由于需要自定义标签背景色,所以由用户来绘制标题。
在页面中设置tabControl_main中设置DrawMode属性。
或者*.Designer.cs文件中,设置DrawMode属性。
1 this.tabControl_main.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
- 为TabControl添加DrawItem事件(每当需要绘制特定项/特定区域时发生)。
或者在*.Designer.cs页面代码如下:
1 this.tabControl_main.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.tabControl_main_DrawItem);
- 设置背景标签。包括设置笔刷、绘制背景、设置文字。代码如下:
1 using System.Drawing; 2 using System.Windows.Forms; 3 //…… 4 /// <summary> 5 /// 初始化tableControl选项时的颜色 6 /// </summary> 7 /// <param name="sender"></param> 8 /// <param name="e"></param> 9 private void tabControl_main_DrawItem(object sender, DrawItemEventArgs e) 10 { 11 //设置笔刷 12 SolidBrush red = new SolidBrush(Color.Red); // 红色 13 SolidBrush yellow = new SolidBrush(Color.Yellow); //黄色 14 SolidBrush blue = new SolidBrush(Color.Blue); //蓝色 15 SolidBrush black = new SolidBrush(Color.Black); //黑色 16 //设置背景 17 //绘制红色背景 18 Rectangle rectangleRed = tabControl_main.GetTabRect(0); 19 e.Graphics.FillRectangle(red, rectangleRed); 20 //绘制黄色背景 21 Rectangle rectangleYellow = tabControl_main.GetTabRect(1); 22 e.Graphics.FillRectangle(yellow, rectangleYellow); 23 //绘制黄色背景 24 Rectangle rectangleBlue = tabControl_main.GetTabRect(2); 25 e.Graphics.FillRectangle(blue, rectangleBlue); 26 //设置标签文字居中对齐 27 StringFormat stringFormat = new StringFormat(); 28 stringFormat.Alignment = StringAlignment.Center; 29 //设置标签文字 30 for (int i = 0; i <tabControl_main.TabPages.Count; i ++) 31 { 32 Rectangle rec = tabControl_main.GetTabRect(i); 33 //设置文字字体和文字大小 34 e.Graphics.DrawString(tabControl_main.TabPages[i].Text , new Font("宋体",10) ,black ,rec , stringFormat); 35 } 36 37 } 38 //……
- 启动后运行效果如下:
参考网址
[1] https://jingyan.baidu.com/article/8ebacdf0caf35649f75cd562.html
原文地址:https://www.cnblogs.com/luyj00436/p/11607102.html
- 在Mac OS X上配置Apache2
- 合并两个排序的链表
- 还有5天,你的比特币最重要的孩子UB-UBTC 可能就永远不属于你了
- Spark SQL 用户自定义函数UDF、用户自定义聚合函数UDAF 教程(Java踩坑教学版)
- Webpack多入口文件、热更新等体验
- 从hello world 解析程序运行机制
- 万达大量员工“被”辞职?曲德君回应:万达网科没有倒
- iOS Programming – 触摸事件处理(2)
- 洋葱海外仓融资2亿元 官网启用msyc.cc域名
- Webpack单元测试,e2e测试
- [看图说话] 基于Spark UI性能优化与调试——初级篇
- Unix下c程序内存泄露检测工具
- 查找链表中倒数第k个结点
- 12日29日人力科技前沿资讯
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android视频压缩的示例代码
- Android如何从实现到封装一个MVP详解
- Android利用爬虫实现模拟登录的实现实例
- Android实现移动小球和CircularReveal页面切换动画实例代码
- Android4.4+ 实现半透明状态栏(Translucent Bars)
- Android弹出dialog后无法捕捉back键的解决方法
- Android编程设置屏幕亮度的方法
- 利用SurfaceView实现下雨与下雪动画效果详解(Kotlin语法)
- Android WebView的使用方法及与JS 相互调用
- Android标题栏上添加多个Menu按钮的实例
- Android编程解析XML文件的方法详解【基于XmlPullParser】
- 教你3分钟了解Android 简易时间轴的实现方法
- Android网络技术HttpURLConnection详解
- Ubuntu16.04下CUDA8.0和CUDA9.0共存
- Ubuntu 20.04 开启隐藏录音降噪功能(推荐)