DevExpress.XtraGrid.GridControl 实现自定义tooltip
DevExpress.XtraGrid.GridControl 控件默认的tooltip显示的每一个单元格的文本值,但是实际工作中会出现各种需求。我这里就有一个列是折扣率显示的值是0-1之间的两位小数,比如说0.55想要显示成五五折。那就需要自己来做一下处理了(效果看下图)

首先。在工具栏中找到ToolTipControllerk控件,并且设置GridControl.ToolTipController=MainGvTool

然后再添加的ToolTipControllerk控件的GetActiveObjectInfo事件中:
private void MainGvTool_GetActiveObjectInfo(object sender, ToolTipControllerGetActiveObjectInfoEventArgs e)
{
GridHitInfo hitInfo = gvDiscountSchme.CalcHitInfo(e.ControlMousePosition); if (hitInfo.RowHandle < 0 || hitInfo.Column == null||hitInfo.HitTest != GridHitTest.RowCell)
{
MainGvTool.HideHint();
return;
} DataRow row = gvDiscountSchme.GetDataRow(hitInfo.RowHandle);
//如果是DiscountRate列 就显示自定义的tooltip
if (hitInfo.Column.FieldName == "DiscountRate")
{
int rate = (int)(Convert.ToDouble(row["DiscountRate"].ToString()) * 100);
e.Info = new ToolTipControlInfo("我也不知道这个参数干嘛用的", GetChineseRate(rate));
}
} private ToolTipControllerShowEventArgs CreateShowArgs(string tooltipText)
{
ToolTipControllerShowEventArgs args = MainGvTool.CreateShowArgs();
args.ToolTip = tooltipText;
return args;
}
e.Info = new ToolTipControlInfo("我也不知道这个参数干嘛用的", GetChineseRate(rate));的第二个参数就是想要显示的文本,如果把GetChineseRate(rate)换成"aaaa" 那么鼠标移动到Grid上面的 DiscountRate列的时候,tooltip就显示的是"aaaa".
这个功能到这里本来算是完成了,但是我这里是想要把0.55显示成五五折,所以还需要做个处理,这里一并说一下我的实现方式
Dictionary<int, string> ChineseRateDic = new Dictionary<int, string>();
public FrmDiscountSchemeList()
{
InitializeComponent();
ChineseRateDic = GetRateDis();
} /// <summary>
/// 根据数字获取汉字
/// </summary>
/// <param name="intRate"></param>
/// <returns></returns>
string GetChineseRate(int intRate)
{
string chineseRate = string.Empty; chineseRate=ChineseRateDic.Where(item => item.Key == intRate).First().Value;
return chineseRate;
} /// <summary>
/// 获取1-100数字转换汉字的字典集合
/// </summary>
/// <param name="intRate"></param>
/// <returns></returns>
Dictionary<int, string> GetRateDis()
{
Dictionary<int, string> dic = new Dictionary<int, string>(); for (int i = 1; i <= 100; i++)
{
if (i < 10)
{
dic.Add(i, string.Format("零{0}折", Enum.GetName(typeof(NumToChinese), i)));
}
else if (i >= 10 && i < 100)
{
string tmp = string.Empty;
foreach (char c in i.ToString())
{
if (c.ToString() == "0") break;
tmp += Enum.GetName(typeof(NumToChinese), Convert.ToInt32(c.ToString()));
}
dic.Add(i, string.Format("{0}折", tmp));
}
else
{
dic.Add(i,"不打折");
}
}
return dic;
} /// <summary>
/// 汉字、数字对比枚举
/// </summary>
enum NumToChinese
{
零 = 0,
一 = 1,
二 = 2,
三 = 3,
四 = 4,
五 = 5,
六 = 6,
七 = 7,
八 = 8,
九 = 9
}
DevExpress.XtraGrid.GridControl 实现自定义tooltip的更多相关文章
- DevExpress.XtraGrid.GridControl中数据源的绑定问题
在利用DevExpress.XtraGrid.GridControl作为一个可编辑的表格控件时,在利用控件之前,先将一个初始化的DataTable对象作为GridControl的数据源进行绑定.可是在 ...
- 实现在DevExpress.XtraGrid.GridControl的列头绘制复选框以实现全选的功能
首先新建一个Win Form测试项目,拖一个GridControl控件到窗体上. public partial class Form1 : Form { public Form1() { Initia ...
- [转]DevExpress.XtraGrid.GridControl gridView自动列宽代码
gridView1.OptionsView.ColumnAutoWidth = false; for (int I = 0; I < gridView1.Columns.Count; I++ ...
- DevExpress之GridControl控件小知识
DevExpress之GridControl控件小知识 一.当代码中的DataTable中有建数据关系时,DevExpress 的 GridControl 会自动增加一个子视图 .列名也就是子表的字段 ...
- DevExpress的GridControl的实时加载数据解决方案(取代分页)
http://blog.csdn.net/educast/article/details/4769457 evExpress是一套第三方控件 其中有类似DataGridView的控件 今天把针对Dev ...
- DevExpress.XtraGrid winform试用分享
DevExpress.XtraGrid在winform里使用还挺麻烦,为了减少重复代码和代码复用,本人针对DevExpress.XtraGrid封装了一个Form的基类,其中涵盖了DevExpress ...
- C# DevExpress 的gridControl或gridView数据导出失败解决方法
来自:http://blog.csdn.net/lybwwp/article/details/8049464 谢谢 在使用DevExpress 的GridPanel控件的时候出现了一个莫名其妙的现象, ...
- DevExpress.XtraGrid
DevExpress.XtraGrid控件使用 该控件类是一个表格控件,但是其具有很多方便而使用的功能,例如可以对记录进行分组,可以再记录的前面加上checkbox,可以将具有相同值的cell 进行合 ...
- DevExpress.XtraGrid 【转】
http://www.cnblogs.com/zeroone/p/4574539.html DevExpress.XtraGrid控件使用 该控件类是一个表格控件,但是其具有很多方便而使用的功能,例如 ...
随机推荐
- 【Telnet】使用Telnet协议连接到远程Shell执行脚本
介绍 本文介绍如何通过Telnet协议连接到远程Shell,执行脚本,并获取执行结果: 相关文章: <[Jsch]使用SSH协议连接到远程Shell执行脚本>http://www.cnbl ...
- Java使用poi操作cexel
Java操作excel比较简单,但是时间长了就会忘记,因此基本的简单操作做个记录. 依赖poi的jar包,pom.xml配置如下: <project xmlns="http://mav ...
- Error #2044: 未处理的 IOErrorEvent:。 text=Error #2035: 找不到 URL这是flash加载外部资源时有时会遇到的问题,对于此问题解决如下
导致这个错误的主要原因是未添加IOErrorEvent事件监听,或者添加了监听,但是加载时使用了unload() 参考资料: http://blog.csdn.net/chjh0540237/arti ...
- 动画--问题追踪:ImageView执行缩放动画ScaleAnimation之后,图像显示不全的问题。
http://www.bkjia.com/Androidjc/929473.html: 问题追踪:ImageView执行缩放动画ScaleAnimation之后,图像显示不全的问题., 问题:我有一个 ...
- memcpy和memmove
memcpy函数 函数原型 void *memcpy(void *dest, const void *src, size_t n); dest:目标地址 src: 起始地址 n: 字节数 头文件 st ...
- 利用Continuous Testing实现Eclipse环境自动单元测试
当你Eclipse环境中修改项目中的某个方法时,你可能由于各种原因没有运行单元测试,结果代码提交,悲剧就可能随之而来. 所幸infinitest(http://infinitest.github.io ...
- [转]Android使用WebView从相册/拍照中添加图片
原地址:http://blog.csdn.net/djcken/article/details/46379929 解决这个问题花了很长时间搜索了解,网上大部分使用openFileChooser但都没解 ...
- 【HOW】用PowerShell脚本修改用户配置文件属性显示次序
首先将如下脚本保存为PowerShell文件,如:ReorderUserProfileProperty.ps1. 在执行此脚本时,如果不输入任何参数,将列出所有用户配置文件属性的名称和显示次序:如果只 ...
- iOS屏幕适配
## iOS屏幕适配 ### iOS屏幕适配发展史 1> iPhone4以前(没有iPad) * 不需要屏幕适配 2> iPad.iPhone5等设备出现 * 需要做横竖屏适配 * aut ...
- Java Docs
1 Java Docs on Oracle: 1.1 Online(EN): JavaSE6 http://docs.oracle.com/javase/6/docs/api/index.htm ...