C# TabConTrol控件背景颜色问题

2024-02-15 14:32

本文主要是介绍C# TabConTrol控件背景颜色问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家肯定都遇到过这样的问题,在做WinForm项目的时候,需要对窗体和控件进行美化,而使用第三方控件的话也没有什么免费的,这时就需要自己VS 自带的美化样式进行美化,而当美化到TabControl控件时,难题来了: 


属性中,并没有直接设置控件的BackImage属性,没办法设置主控件的背景。 
以下我给大家提供一个简单的方法(本人不是专业做美工的,并没有多少美化功底,具体的颜色搭配,自己看着办把!呵呵) 
第一步: 
       设置TabControl控件(名称以tclDemo为例)的DrawMode属性为:OwnerDrawFixed;用于指定由用户来绘制标题 


第二步:注册TabControl控件的DrawItem事件: 


第三步: 


private void tclDemo_DrawItem(object sender, DrawItemEventArgs e) 



            //获取TabControl主控件的工作区域 

            Rectangle rec = tclDemo.ClientRectangle; 



            //获取背景图片,我的背景图片在项目资源文件中。 

            Image backImage = Resources.枫叶; 



            //新建一个StringFormat对象,用于对标签文字的布局设置 

            StringFormat StrFormat = new StringFormat(); 

            StrFormat.LineAlignment = StringAlignment.Center;// 设置文字垂直方向居中 

            StrFormat.Alignment = StringAlignment.Center;// 设置文字水平方向居中          

            // 标签背景填充颜色,也可以是图片 

    SolidBrush bru = new SolidBrush(Color.FromArgb(72, 181, 250)); 

            SolidBrush bruFont = new SolidBrush(Color.FromArgb(217, 54, 26));// 标签字体颜色 

            Font font = new System.Drawing.Font("微软雅黑",12F);//设置标签字体样式 



            //绘制主控件的背景 

            e.Graphics.DrawImage(backImage, 0, 0, tclDemo.Width, tclDemo.Height); 

            //绘制标签样式 

            for (int i = 0; i < tclDemo.TabPages.Count; i++) 

            { 

                //获取标签头的工作区域 

                Rectangle recChild = tclDemo.GetTabRect(i); 

                //绘制标签头背景颜色 

                e.Graphics.FillRectangle(bru, recChild); 

                //绘制标签头的文字 

                e.Graphics.DrawString(tclDemo.TabPages[i].Text,font,bruFont,recChild,StrFormat); 

            } 

}

这篇关于C# TabConTrol控件背景颜色问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/711654

相关文章

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

c# checked和unchecked关键字的使用

《c#checked和unchecked关键字的使用》C#中的checked关键字用于启用整数运算的溢出检查,可以捕获并抛出System.OverflowException异常,而unchecked... 目录在 C# 中,checked 关键字用于启用整数运算的溢出检查。默认情况下,C# 的整数运算不会自

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴