陈程的技术博客

  • 关于作者
全栈软件工程师
一个专注于技术研究创新的程序员
  1. 首页
  2. .NET
  3. 正文

DevExpress控件-使用ToolTipController控件

2016年3月8日 710点热度 0人点赞 0条评论

如图要求,在gridcontrol控件上数据正常显示,用,隔开每个数据,但是鼠标移动上去要求竖着一列的显示。

实现:

由于原数据和自带tootip效果显示一致,只能重写一个tootip鼠标移动上去的效果。

在界面上拉上一个控件如图1

后台捕获鼠标在gridcontrol上的位置,确定行数,在确定位置处显示想要的结果。

后台代码如下:

int _RowHandle;
     private void gridViewTrade_MouseMove(object sender, MouseEventArgs e)
     {
         try
         {
             // 获取鼠标焦点
             DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hi = gridViewTrade.CalcHitInfo(new Point(e.X, e.Y));

             // 如果鼠标不是在行上.或者不在列上
             if (hi.RowHandle < 0 || hi.Column == null)
             {
                 _RowHandle = -1;
                 return;
             }
             // rowHandle为全局变量,如果上次指向的是这一行的数据.则这次不重新初始化ToolTip.(因为鼠标一移到列上面则会触发多次的MouseMove)
             // 如果RowHandle为不等于rowHandle则重新显示ToolTip

             // 只有在订单编号列的时候才显示ToolTip
             if (hi.Column.FieldName == "Contract_Codes")
             {
                 // 创建ToolTip的数据显示,只有订单有备注的时候才显示ToolTip
                 string tooltipText = gridViewTrade.GetRowCellValue(hi.RowHandle, gc_TradeType).ToString();
                 if (!string.IsNullOrEmpty(tooltipText))
                 {
                     // 获取显示ToolTip事件实例  ToolTipControllerShowEventArgs args = CreateShowArgs(StringHelper.JoinLineToString(tooltipText));

                     // 显示ToolTip 这里不可以用控件的坐标.要用屏幕的坐标Control.MousePosition
                     toolTipController.ShowHint(args, System.Windows.Forms.Control.MousePosition);
                 }
             }
             else if (hi.Column.FieldName == "Client_Ids")
             {
                 string tooltipText = gridViewTrade.GetRowCellValue(hi.RowHandle, gc_TradeAccount).ToString();
                 if (!string.IsNullOrEmpty(tooltipText))
                 {
                     // 获取显示ToolTip事件实例
                     ToolTipControllerShowEventArgs args = CreateShowArgs(StringHelper.JoinLineToString(tooltipText));

                     // 显示ToolTip 这里不可以用控件的坐标.要用屏幕的坐标Control.MousePosition
                     toolTipController.ShowHint(args, System.Windows.Forms.Control.MousePosition);
                 }
             }
         }
         catch (Exception ex)
         { }
     }

     /// <summary>
     /// 创建显示ToolTip事件实例
     /// </summary>
     /// <param name="tooltipText"></param>
     /// <returns></returns>
     private ToolTipControllerShowEventArgs CreateShowArgs(string tooltipText)
     {
         ToolTipControllerShowEventArgs args = toolTipController.CreateShowArgs();
         args.ToolTip = tooltipText;
         return args;
     }

StringHelper.JoinLineToString这个方法是我处理数据分行用的。

标签: DevExpress
最后更新:2021年4月1日

博主

全栈工程师,侧重项目技术解决方案规划和开发

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

分类
  • .NET (65)
  • docker (3)
  • linux (12)
  • python (20)
  • web (14)
  • 小程序 (4)
  • 数据库 (2)
  • 未分类 (4)
  • 杂七杂八 (10)
标签聚合
centos nginx python js winform C# DevExpress linux
最新 热点 随机
最新 热点 随机
.NET开发手册标准参考 招募兼职前端开发 Centos安装dotnet6环境 VS上切换分支,vs编译运行出现bug,A fatal error was encountered彻底解决方案 用C#封装一个线程安全的缓存器,达到目标定时定量更新入库 C#通过特性的方式去校验指定数据是否为空
DreamSkin自定义美化控件-RoundButton圆角矩形按钮控件 winform 微秒级别的定时器 招募兼职前端开发 python 批量剪切图片指定区域 VS上切换分支,vs编译运行出现bug,A fatal error was encountered彻底解决方案 基于Nebulas(nas)区块链开发的Dapp,解忧杂货铺

COPYRIGHT © 2021 陈程的技术博客. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS