您的足迹:首页 > DevExpress控件 >DevExpress控件-使用ToolTipController控件

DevExpress控件-使用ToolTipController控件

QQ截图20160308110538.png

图1.ToolTipController控件截图

需求:

QQ截图20160308110906.png

图2

如图要求,在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这个方法是我处理数据分行用的。
说明:
学习来自:CSDN。
http://bbs.csdn.net/topics/390864926


本博客所有文章如无特别注明均为原创。作者:cc复制或转载请以超链接形式注明转自 我的博客
原文地址《DevExpress控件-使用ToolTipController控件

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)