c# comboBox输出图文效果
核心代码:重写DrawItem事件
- void Event_CboDrawItem(object sender, DrawItemEventArgs e)
- {
- if (e.Index < ) return;
- var cbo = sender as ComboBox;
- if (cbo == null) return;
- Graphics g = e.Graphics;
- System.Drawing.Rectangle r = e.Bounds;
- ImageList tmpImg = null;
- if (cbo == cboOriginLang) tmpImg = imgLstOrigin;
- else tmpImg = imgLstTarget;
- Size imageSize = tmpImg.ImageSize;
- Font fn = cbo.Font;
- var s = (KeyValuePair<string, string>)cbo.Items[e.Index];//这里要求外面给cbo赋值时绑定List<KeyValuePair<string, string>>
- StringFormat sf = new StringFormat();
- sf.Alignment = StringAlignment.Near;
- if (e.State == (DrawItemState.NoAccelerator | DrawItemState.NoFocusRect))
- {
- //画条目背景
- e.Graphics.FillRectangle(new SolidBrush(Color.White), r);//没有选中时背景为白色
- //绘制图像
- tmpImg.Draw(e.Graphics, r.Left, r.Top, e.Index);
- //显示字符串
- e.Graphics.DrawString(s.Value, fn, new SolidBrush(Color.Black), r.Left + imageSize.Width, r.Top);
- //显示取得焦点时的虚线框
- e.DrawFocusRectangle();
- }
- else
- {
- e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue), r);//选中背景为浅灰
- tmpImg.Draw(e.Graphics, r.Left, r.Top, e.Index);
- e.Graphics.DrawString(s.Value, fn, new SolidBrush(Color.Black), r.Left + imageSize.Width, r.Top);
- e.DrawFocusRectangle();
- }
- }
配合图文,给comboBox和ImageList添加内容
- void FillCbo(ComboBox cbo, ImageList img, IEnumerable<string> strLst)
- {
- img.Images.Clear();
- cbo.Items.Clear();
- Action<string> addItem = shortName =>
- {
- var bmp = GetPicFromName(shortName);
- img.Images.Add(bmp);
- cbo.Items.Add(new KeyValuePair<string, string>(shortName, string.Format("{0}({1})", DisplayText, shortName)));
- };
- foreach (var item in strLst)
- addItem(item);
- }
另外,还需要修改comboBox的属性:
- cbo.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
- cbo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
还有一个问题值得留意。本来在程序的处理代码里面我将Drawmode设置成OwnerDrawFixed,但是由于列项很多,有100多项,设置成这个选项之后,MaxDropDownItems=8失效了,后来改成OwnDrawVariable就可以了。两者相较,后者的灵活空间应该更大,可以手动调整的范围更广,对技术的要求也更高。
c# comboBox输出图文效果的更多相关文章
- EasyUI 通过 Combobox 实现 AutoComplete 效果
朋友在做一个web程序,用的EasyUI框架,让我帮忙实现一个自动提示功能.由于之前我也没用过EasyUI框架,就想到了jQueryUI有 AutoComplete 插件,就想直接拿过来用. 但当我将 ...
- 网页“console”输出图文信息
http://www.monmonkey.com/javascript/jiben2.html 参考以上链接中的转义字符使用. http://www.cnblogs.com/Wayou/p/chrom ...
- c 按输入的字母来输出对应效果
输入一个大写字母,如 F,输出 比如: 输入:F 输出: F EFE DEFED CDEFEDC BCDEFEDCB ABCDEFEDCBA #include<stdio.h> int m ...
- 用Response对象的write方法和<%%>及<%=%>输出同样效果的乘法表格
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Response1.aspx ...
- PHP中如何实现 “在页面中一边执行一边输出” 的效果
<?php set_time_limit(0); //在有关数据库的大量数据的时候,可以将其设置为0,表示无限制. ob_end_clean(); //在循环输出前,要关闭 ...
- python 全栈开发,Day126(创业故事,软件部需求,内容采集,显示内容图文列表,MongoDB数据导入导出JSON)
作业讲解 下载代码: HBuilder APP和flask后端登录 链接:https://pan.baidu.com/s/1eBwd1sVXTNLdHwKRM2-ytg 密码:4pcw 如何打开APP ...
- vs2013+MVC3.0+EasyUI的ComboBox联动使用(二)
vs2013+MVC3.0+EasyUI的ComboBox联动使用(二) 简单介绍:在vs2013(.net4.0)中使用MVC3.0对于EasyUI中ComboBox的联动使用. 载入Comb ...
- 软件部需求,内容采集,显示内容图文列表,MongoDB数据导入导出JSON
全局变量 由于多个html页面,需要引用同一个变量.这个时候,需要定义一个全局变量!如何定义呢? 默认包含了mui的html文件都导入mui.js文件.那么将变量写在mui.js中,就可以实现所有页面 ...
- Android图文混排-实现EditText图文混合插入上传
前段时间做了一个Android会议管理系统,项目需求涉及到EditText的图文混排,如图: 在上图的"会议详情"中.须要支持文本和图片的混合插入,下图演示输入的演示样例: 当会议 ...
随机推荐
- 【转】UML类图符号 6种关系说明以及举例
转自http://www.cnblogs.com/duanxz/archive/2012/06/13/2547801.html UML中描述对象和类之间相互关系的方式包括:依赖(Dependency) ...
- Java 利用 poi 生成 Excel文件的通用例子
在用java 写数据库应用的时候, 通常会生成各种报表,而这些报表可能会被导出为各种格式的文件,比如Excel文档,pdf 文档等等. 今天先做了一个生成Excel 文档的例子,主要解决以下问题: 生 ...
- Macos mysql 8.0.11 添加配置文件
mac 安装mysql 后,没有配置文件,如果需要添加配置文件,需要在/etc 目录下面添加 my.cnf 文件. 添加方法 打开文件命令:sudo vi /etc/my.cnf 文件添加内容: [ ...
- FIR仿真module_04
作者:桂. 时间:2018-02-06 12:10:14 链接:http://www.cnblogs.com/xingshansi/p/8421001.html 前言 本文主要记录基本的FIR实现, ...
- MySQL 死锁与日志二三事
最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现.甚至有些异常还比较诡异,最后 root cause 分析颇费周折.那实际业务当 ...
- unity, ios skin crash
https://issuetracker.unity3d.com/issues/ios-loading-models-with-tangents-set-to-calculate-legacy-fro ...
- activiti主要API对象
ProcessEngine //流程引擎 RuntimeService //与流程实例,执行对象(正在执行) TaskService //正在执行任务 H ...
- Oozie工作流属性配置的方式与策略
本文原文出处: http://blog.csdn.net/bluishglc/article/details/46049817 Oozie工作流属性配置的三种方式 Oozie有三种方法可以给工作流提供 ...
- 快速开方法(c语言)译文
人们最早就在Quake3源代码中发现了类似如下的C代码,它可以快速的求1/sqrt(x),在3D图形向量计算方面应用很广. float invSqrt(float x) { float xhalf = ...
- 基于Xilinx Zynq Z7045 SoC的CNN的视觉识别应用
基于Xilinx Zynq Z7045 SoC的CNN的视觉识别应用 由 judyzhong 于 星期三, 08/16/2017 - 14:56 发表 作者:stark 近些年来随着科学技术的不断进步 ...