DevExpress GridView 列标题点击事件

简介: GridView有RowCellClick事件,即单元格点击事件,但是针对列标题行以及列标题单元格却没有相应的事件。在这里使用GridView的MouseDown事件。这里同样使用的是GridHitInfo来获取点击位置的信息,来判断是否在列标题上。GridHitInfo根据鼠标点击的x、y坐标获取该点的相关信息,判断是否点击在列标题行内。private void

GridView有RowCellClick事件,即单元格点击事件,但是针对列标题行以及列标题单元格却没有相应的事件。

在这里使用GridView的MouseDown事件。这里同样使用的是GridHitInfo来获取点击位置的信息,来判断是否在列标题上。GridHitInfo根据鼠标点击的x、y坐标获取该点的相关信息,判断是否点击在列标题行内。

private void gridView_MouseDown(object sender, MouseEventArgs e)

        {

            //鼠标左键点击

            if (e.Button == MouseButtons.Left)

            {

                GridHitInfo info = gridView.CalcHitInfo(e.X, e.Y);

                //在列标题栏内且列标题name是"colName"

                if (info.InColumnPanel && info.Column.Name =="colName")

                {

                    XtraMessageBox.Show("点击Name列标题!");

                }

            }

        }

以上代码很简单,但是有个小问题,就是在该列右边线拖动这一列的列宽时,也会弹出对话框,因为这里拖动列宽也被视为点击鼠标。这显然不合适。解决这个问题的办法也很简单,就是判断鼠标点击位置不在右边线向左移动一点距离(3像素)范围内。下面对以上代码稍加修改,就不会再有这个问题了。

private void gridView_MouseDown(object sender, MouseEventArgs e)

        {

            //鼠标左键点击

            if (e.Button == MouseButtons.Left)

            {

                GridHitInfo gridHitInfo = gridView.CalcHitInfo(e.X, e.Y);

                //在列标题栏内且列标题name是"colName"

                if (gridHitInfo.InColumnPanel && gridHitInfo.Column.Name =="colName")

                {

                    //获取该列右边线的x坐标

                    GridViewInfo gridViewInfo = (GridViewInfo)this.gridView.GetViewInfo();

                    int x = gridViewInfo.GetColumnLeftCoord(gridHitInfo.Column) + gridHitInfo.Column.Width;

                    //右边线向左移动3个像素位置不弹出对话框(实验证明3个像素是正好的)

                    if (e.X < x - 3)

                    {

                        XtraMessageBox.Show("点击Name列标题!");

                    }

                }

            }

        }

上面的方法转载自:DevExpress GridView使用技巧之列标题点击事件
方法二(同事浩哥想出来的):

if (info.InColumnPanel)
{                 
   if (gridControl1.Cursor != Cursors.Default)
    {
        XtraMessageBox.Show("当鼠标在标题栏两列之间的时候,鼠标的样式会发生变化");
    }
    else
    {
        //这里面应该是点击的列标题而不是两列之间的那部分
    }
}

作者:jiankunking 出处:http://blog.csdn.net/jiankunking

目录
相关文章
|
8月前
WPF-样式问题-处理ListBox、ListView子项内容全填充问题
WPF-样式问题-处理ListBox、ListView子项内容全填充问题
112 0
|
数据处理 数据库
DevExpress gridview下拉框repositoryItemComboBox的使用
原文  http://www.cnblogs.com/huangzhenhua/p/3898534.html 本以为DevExpress gridview中的下拉框会像比原来的datatgridview中的下拉框绑定数据简单好用,没想到费了老大劲,查阅各种资料总算是绑定上了数据,并且能够实现想要的效果。下面就详细写一下这个实现的过程,分享一下,同时也是对这个知识再次熟悉一
2146 0
|
C#
用WPF实现在ListView中的鼠标悬停Tooltip显示
原文:用WPF实现在ListView中的鼠标悬停Tooltip显示 一、具体需求描述     在WPF下实现,当鼠标悬停在ListView中的某一元素的时候能弹出一个ToolTip以显示需要的信息。 二、代码实现 在.XMAL文件中   Code   在listview 元素中加入ItemContainerStyle="{StaticResource InfoTipStyle}" 如下所示代码: Code   三、心得     调用顺序就是listview呈现出预定的style, InfoTipStyle 调用声明好的tooltip。
1740 0
UWP 取消GridView、ListView鼠标选中、悬停效果
原文:UWP 取消GridView、ListView鼠标选中、悬停效果 因为经常碰到ListView或者ListBox之类的选中、鼠标悬停样式和自己设置的主题颜色不搭,这时就需要改变这些样式了. 而这里我通过ListView来说明,大致思路其实就是重新定义Item的Template。
1148 0
|
.NET 开发框架 JavaScript
|
Android开发 数据格式 XML
Android开发之GridView实现弹出式选择器
前段时间,写了一个小项目,里面有个界面如下图所示,之前的版本是用Spinner来做,觉得不够拉轰,所以采用GridView做了一个实现,效果还不错,Mark一下。
853 0