首页 > 编程语言 >c# DevExpress GridView实现鼠标移动到单元格文字内容上后变手形,并触发RowCellClick事件

c# DevExpress GridView实现鼠标移动到单元格文字内容上后变手形,并触发RowCellClick事件

时间:2023-03-02 16:55:46浏览次数:38  
标签:info 变手 GridView 鼠标 c# DevExpress 单元格 cellInfo rectangle

我们都知道,在.net自带的Winform控件DataGridView控件有一个 CellContentClick 事件,该事件是在点击单元格内容的时候触发,很好用

那么在DevExpress中的GridView中是否有类似事件呢,很遗憾,DEV中只提供了一个RowCellClick事件,这个事件有个弊端就是点击单元格

空白的地方也会触发事件,跟我的要求不一样,我希望的是鼠标移动单元格文字上鼠标变手型,并能点击,鼠标移动到单元格空白处鼠标恢复

默认且点击也无效,以下代码利用MouseMove配合RowCellClick事件可以很好的解决我的问题,具体代码如下

private void bgvCharge_MouseMove(object sender, MouseEventArgs e)
        {
            BandedGridHitInfo info = this.bgvCharge.CalcHitInfo(e.X, e.Y);
            if (info.InRowCell)
            {              
                //先获取单元格文字内容的宽度和高度的
                string _value = this.bgvCharge.GetRowCellValue(info.RowHandle, info.Column).ToString();
                Graphics g = this.CreateGraphics();
                SizeF size = g.MeasureString(_value, info.Column.AppearanceCell.Font);
                //获取单元格所在的坐标信息
                DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo info2 = this.bgvCharge.GetViewInfo() as DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo;
                DevExpress.XtraGrid.Views.Grid.ViewInfo.GridCellInfo cellInfo = info2.GetGridCellInfo(info.RowHandle, info.Column);
                //新建一个矩形区域用来存放单元格文字占用的矩形区域
                Rectangle rectangle = new Rectangle();
                rectangle.X = cellInfo.Bounds.X + cellInfo.Bounds.Width / 2 - (int)(size.Width / 2) - 1;
                rectangle.Y = cellInfo.Bounds.Y + cellInfo.Bounds.Height / 2 - (int)(size.Height / 2) + 1;
                rectangle.Width = (int)size.Width;
                rectangle.Height = (int)size.Height;
                //如果鼠标位置在该矩形区域内,鼠标变手形
                if (rectangle.Contains(e.Location))
                {
                    this.gridCharge.Cursor = Cursors.Hand;
                }
                else
                {
                    this.gridCharge.Cursor = Cursors.Default;
                }               
            }
            else
            {
                this.gridCharge.Cursor = Cursors.Default;
            }
        }

        private void bgvCharge_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
        {
            //如果鼠标不是手形状态,则点击事件退出无效
            if (this.gridCharge.Cursor != Cursors.Hand) return;
            MessageBox.Show("Test");
        }

 

标签:info,变手,GridView,鼠标,c#,DevExpress,单元格,cellInfo,rectangle
From: https://www.cnblogs.com/huang1314wei/p/17172355.html

相关文章

  • dev gridControl控件 常用使用方法及设置(实时更新)
    devgridControl控件常用使用方法及设置(实时更新)新增方法:+1.GridControl中GridView的指定列自动排序功能gridView1.BeginSort();//事务开始gridView1.ClearSorting();......
  • kubectl查询日志命令
    防水堡bug日志定位命令:dockerlogs--tail100xxx:xxx是容器的id或者名称kubectllogs-f--tail100xxx:xxx是pod的id,如果的命名空间不一样就:kubectl-nyyylogs-f......
  • leetcode2565. 最少得分子序列[题解]
    最少得分子序列给你两个字符串s和t。你可以从字符串t中删除任意数目的字符。如果没有从字符串t中删除字符,那么得分为0,否则:令left为删除字符中的最小下标。......
  • cowtransfer(奶牛快传)自动上传文件脚本—流程分析
    cowtransfer(奶牛快传)自动上传文件脚本—流程分析序言:距离上传发文也有几天了,这几天也是将这个脚本优化了一下。如果还不清楚这个脚本的效果是怎么样的小伙伴可以......
  • 对JAVA Doc的笔记以及之前学习的记录
      /**加enter能够在代码中快速生成图中的参数信息 要求:加在需要注释的代码上方  在所开发项目文件夹中打开cmd输入javadoc-encodingUTF-8-charsetUTF-8Doc.......
  • 【crontab】Ubuntu 设置定时任务
    crontab只有一个配置文件​​crontab​​​ ​​-e  用vim编辑配置文件,退出之后,会自动运行​​​​crontab​​​ ​​-l  查看有哪些任务​​#例子:***......
  • 01 Pytorch的数据载体张量与线性回归
    Pytorch的数据载体张量与线性回归Pytorch官方英文文档:https://pytorch.org/docs/stable/torch.html?Pytorch中文文档:https://pytorch-cn.readthedocs.io/zh/latest/1.......
  • 【PuTTY】Configuration
    1、设置ipport2、设置120列,40行3、设置光标为Verticalline+闪烁4、设置字体为新宋体、12px、GB23125、设置发送null的时间间隔60秒,不然可能因为路由的问题自动中断连接6......
  • luogu P6276 [USACO20OPEN]Exercise P
    题面传送门首先考虑一个固定排列的答案是什么。考虑它的若干置换环,应该是所有环环长的LCM,所有数都会转回本来的位置。现在变成计算所有环的环长的LCM的积的问题。注意......
  • 【npm】在Ubuntu1804部署Verdaccio
    1、创建verdaccio系统用户:$sudoadduser--system--gecos'VerdaccioNPMmirror'--group--home/var/lib/verdaccioverdaccio 2、切换到该用户,并且切入该用户的家目......