c#美化Combox

article/2025/9/23 15:48:42

1.C#美化Combox的源码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;namespace BeautifyComboBox
{public partial class B_ComboBox : ComboBox{public B_ComboBox(){InitializeComponent();this.DrawMode = DrawMode.OwnerDrawFixed;//this.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.ListBox_DrawItem);}#region 变量private static Brush[] listBoxBrushes;//该数组用来存储绘制listBox1背景的Brush对象private static int place = -1;//颜色位置的取值private static bool naught = true;//判断是否重绘#endregion#region 属性private bool TGradualC = false;[Browsable(true), Category("控件的重绘设置"), Description("判断是否进行渐变色的设置")] //在“属性”窗口中显示DataStyle属性public bool GradualC{get { return TGradualC; }set{TGradualC = value;this.Invalidate();}}private Color TColorSelect = Color.Gainsboro;[Browsable(true), Category("控件的重绘设置"), Description("项被选中后的高亮度颜色")] //在“属性”窗口中显示DataStyle属性public Color ColorSelect{get { return TColorSelect; }set{TColorSelect = value;this.Invalidate();}}private Color TColor1 = Color.CornflowerBlue;[Browsable(true), Category("控件的重绘设置"), Description("第一个颜色的设置")] //在“属性”窗口中显示DataStyle属性public Color Color1{get { return TColor1; }set{TColor1 = value;this.Invalidate();}}private Color TColor1Gradual = Color.Thistle;[Browsable(true), Category("控件的重绘设置"), Description("第一个颜色的渐变色设置")] //在“属性”窗口中显示DataStyle属性public Color Color1Gradual{get { return TColor1Gradual; }set{TColor1Gradual = value;this.Invalidate();}}private Color TColor2 = Color.PaleGreen;[Browsable(true), Category("控件的重绘设置"), Description("第二个颜色的设置")] //在“属性”窗口中显示DataStyle属性public Color Color2{get { return TColor2; }set{TColor2 = value;this.Invalidate();}}private Color TColor2Gradual = Color.DarkKhaki;[Browsable(true), Category("控件的重绘设置"), Description("第二个颜色的渐变色设置")] //在“属性”窗口中显示DataStyle属性public Color Color2Gradual{get { return TColor2Gradual; }set{TColor2Gradual = value;this.Invalidate();}}#endregionprivate void B_ComboBox_DrawItem(object sender, DrawItemEventArgs e){Rectangle r = new Rectangle(0, 0, this.Width, this.Height);			//设置重绘的区域SolidBrush SolidB1 = new SolidBrush(this.Color1);				//设置上一行颜色SolidBrush SolidB2 = new SolidBrush(this.Color2);				//设置下一行颜色//设置上一行的渐变色LinearGradientBrush LinearG1 = new LinearGradientBrush(r, this.Color1, this.Color1Gradual, LinearGradientMode.BackwardDiagonal);//设置下一行的渐变色LinearGradientBrush LinearG2 = new LinearGradientBrush(r, this.Color2, this.Color2Gradual, LinearGradientMode.BackwardDiagonal);//将单色与渐变色存入Brush数组中listBoxBrushes = new Brush[] { SolidB1, LinearG1, SolidB2, LinearG2 };if (this.Items.Count <= 0)									//如果当前控件为空return;if (e.Index == (this.Items.Count - 1))								//如果绘制的是最后一个项{bool tem_bool = true;if (e.Index == 0 && tem_bool)								//如果当前绘制的是第一个或最后一个项naught = false;										//不进行重绘}if (naught)												//对控件进行重绘{//获取当前绘制的颜色值Brush brush = listBoxBrushes[place = (GradualC) ? (((e.Index % 2) == 0) ? 1 : 3) : (((e.Index % 2) == 0) ? 0 : 2)];//用指定的画刷填充列表项范围所形成的矩形e.Graphics.FillRectangle(brush, e.Bounds);//判断当前项是否被选取中bool selected = ((e.State & DrawItemState.Selected) == DrawItemState.Selected) ? true : false;if (selected)											//如果当前项被选中{e.Graphics.FillRectangle(new SolidBrush(ColorSelect), e.Bounds); 	//绘制当前项}//绘制当前项中的文本e.Graphics.DrawString(this.Items[e.Index].ToString(), this.Font, Brushes.Black, e.Bounds);}e.DrawFocusRectangle();									//绘制聚焦框}}
}

2.测试的窗体效果源码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace BeautifyComboBox
{public partial class Form1 : Form{public Form1(){InitializeComponent();}}
}

3.效果图

 


http://chatgpt.dhexx.cn/article/O3YBlFIv.shtml

相关文章

VS combox控件的简单用法

一、conbox最最简单的用法 效果是这样的&#xff1a; 代码&#xff1a; private void Form1_Load(object sender, EventArgs e){comboBox1.Items.Add("平方差");comboBox1.Items.Add("归一化的平方差");comboBox1.Items.Add("相关性匹配");comb…

控件之combox

一. combox显示 首先combox有两个属性来存储数据&#xff1a;DisplayMember(显示成员),ValueMember(值成员) &#xff0c;DisplayMember是我们在combox界面上看到的&#xff0c;ValueMember是隐藏的数据。一般来说我们只需要设置DisplayMember属性的值即可。 循环赋值 &#xf…

COMBOX的基本使用

COMBOX的基本使用 (2015-07-21 23:10:27) 转载▼ 标签&#xff1a; it 分类&#xff1a; MFC 组合框其实就是把一个 编辑框 和一个列表框组合到了一起&#xff0c;分为三种&#xff1a;简易&#xff08;Simple&#xff09;组合框、下拉式&#xff08;Dropdown&#xff09;…

linux搭建tomcat集群

工作需要&#xff0c;要使用tomcat集群做负载均衡。准备把自己搭建的过程记录下来&#xff0c;供日后参考。 由于是自己练手&#xff0c;用的是自己电脑虚拟出来的3台虚拟机&#xff0c;系统版本CentOs6.5.话不多说&#xff0c;直接开始 装JDK于配置环境变量过程略过。。 把…

Nginx部署三台Tomcat集群详细操作步骤

详细步骤请看教程视频&#xff1a;视频地址 以下是安装教程和关键代码等资料&#xff1a; 讲解图例&#xff1a; 一、环境安装 JDK1.8安装教程&#xff1a;教程地址 Tomcat8.5获取链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/18XqIcrehbdcs_s9lCG_xrA 提取…

Tomcat集群Session会话复制方案

Tomcat集群Session会话复制方案 一、配置Tomcat二、项目配置与启动配置 一、配置Tomcat 1.进入tomcat官网查找相应tomcat版本的文档&#xff0c;版本不同配置信息也就相应不同。 图中标识2就是tomcat默认的群集配置 2.打开tomcat/config/server.xml配置文件。 在 <Engin…

Tomcat 集群

多种方式实现 Tomcat 集群。 1 概述 1.1 集群能带来什么 提高服务的性能&#xff0c;例如计算处理能力、并发能力等&#xff0c;以及实现服务的高可用性。提供项目架构的横向扩展能力&#xff0c;增加集群中的机器就能提高集群的性能。提升对静态文件的处理性能。利用 Web 服务…

Tomcat集群同步原理

#概述 随着C/S架构中&#xff0c;客户端对服务器的访问量及访问次数逐渐增多&#xff0c;单个服务器已经不能够满足客户端的请求了。于是现在大多数服务器都做成了集群的形式。而服务器集群会有一个很大问题&#xff0c;就是同步问题。比如&#xff0c;现在我对一个有四台计算机…

零基础搭建Tomcat集群(超详细)

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…

Nginx 搭建Tomcat集群

目录 一、架构图 二、配置上游服务器 三、配置集群服务 四、加权负载均衡 五、配置最大连接数 六、启动慢增长 一、架构图 二、配置上游服务器 打开config/nginx.conf 添加配置如下&#xff1a; 三、配置集群服务 刷新nginx后&#xff0c;集群配置完毕&#xff01; 四…

Tomcat集群及Session共享

Tomcat集群 由于单台Tomcat的承载能力是有限的&#xff0c;当我们的业务系统用户量比较大&#xff0c;请求压力比较大时&#xff0c;单台Tomcat是扛不住的&#xff0c;这个时候&#xff0c;就需要搭建Tomcat的集群&#xff0c;而目前比较流行的做法就是通过Nginx 来实现Tomcat…

Windows中部署Tomcat集群

1.新建文件夹tomcats 准备3台tomcat 测试&#xff1a; 错点&#xff1a; 使用的是7无缓存版本&#xff0c;但是扔显示8。解决&#xff1a;将环境变量中的catalina删掉。 ~~删除线格式~~ 2.修改配置文件 第一台8005 第二台8006 第三台8007 此位置第一台8091&#xff…

Nginx+Tomcat集群环境搭建

Tomcat集群能带来什么&#xff1f; 提高服务的性能、并发能力、以及高可用性提高项目架构的横向扩展能力 提高服务的性能 实际公司线上生产环境都会选择一台机器部署一个tomcat&#xff0c;多台机器完成集群&#xff0c;毕竟一台机器部署多个tomcat还是有一些共享瓶颈的&…

tomcat集群

tomcat集群 什么是集群 集群是一组协同工作的服务实体&#xff0c;用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来&#xff0c;一个集群就象是一个服务实体&#xff0c;但 事实上集群由一组服务实体组成。 集群的特性 与单一服务实体相比较&#xff0c;…

tomcat集群部署

tomcat集群部署 1 创建2个 tomcat 2 将 tomcat 官网文档的配置示例复制到 server.xml文件中 3 修改 server.xml 文档中的参数配置 3.1 Cluster    className表示tomcat集群时,之间相互传递信息使用那个类来实现信息之间的传递。channelSendOptions可以设置为2、4、8、10&a…

Nginx+tomcat集群

Nginxtomcat集群 定义&#xff1a;在测试环境中有多个tomcat运行这一个项目&#xff0c;需要nginx管理 2特点&#xff1a;1&#xff0c;增加项目访问能力 2&#xff0c;增加服务器性能 3&#xff0c;实现不同负载均衡 3负载均衡&#xff1a;根据每台服务器的性能分配其能承受住…

Tomcat集群配置

1.Tomcat集群 多个 Tomcat 服务器构成了一个集群&#xff08;Cluster&#xff09;系统&#xff0c;共同为客户提供服务。集群系统具有以下优点&#xff1a; 高可靠性高性能计算负载平衡 图1-1显示了由 JK插件和两个 Tomcat服务器构成的集群系统。集群系统的正常运作离不开以…

Tomcat 集群搭建入门

简介 由于单台Tomcat的承载能力是有限的&#xff0c;当我们的业务系统用户量比较大&#xff0c;请求压力比较大时&#xff0c;单台Tomcat是扛不住的&#xff0c;这个时候&#xff0c;就需要搭建Tomcat的集群&#xff0c;而目前比较流程的做法就是通过Nginx来实现Tomcat集群的负…

Tomcat 集群部署

Tomcat快速入门 Tomca基本介绍 环境准备 JVM介绍Java业务都是运行在java虚拟机上&#xff0c;java虚拟机简称JVM( java virtual machine) ​ 虚拟机是通过软件模拟出具有完整硬件系统的功能 ​ 为什么Java需要JVM虚拟机 ​ 早期C语言不支持跨平台&#xff0c;如果C语言想…

Tomcat系列之五:Tomcat集群

基于mod_proxy实现负载均衡 在httpd.conf中启用httpd-proxy.conf配置文件&#xff0c; Include /etc/httpd/extra/httpd-proxy.conf 修改httpd-proxy.conf文件&#xff1a; ProxyRequests Off <proxy balancer://lbcluster1>BalancerMember ajp://192.168.1.211:8009 loa…