zoukankan      html  css  js  c++  java
  • 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
            }                
    
  • 相关阅读:
    去掉链接A标签周围的虚线框(IE、Firefox)<转>
    解决ckeditor 错误 和一些WEB开发的错误
    asp.net程序编译调试时偶尔出现访问被拒绝的错误的解决方法
    手工创建全新的DataSet
    玩3c `
    C#写个很不错的资源管理器
    asp.net调用JavaScript自定义方法
    JavaScript压缩格式化和加密
    ASP.NET格式化时间
    Response.ContentType 详细列表
  • 原文地址:https://www.cnblogs.com/hc2016/p/6148334.html
Copyright © 2011-2022 走看看