DevExpress GridView使用技巧之列标题点击事件

在这里使用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列标题!");

 

                    }

 

                }

 

            }

 

        }

时间: 2024-10-27 11:03:37

DevExpress GridView使用技巧之列标题点击事件的相关文章

DevExpress GridView 列标题点击事件

GridView有RowCellClick事件,即单元格点击事件,但是针对列标题行以及列标题单元格却没有相应的事件. 在这里使用GridView的MouseDown事件.这里同样使用的是GridHitInfo来获取点击位置的信息,来判断是否在列标题上.GridHitInfo根据鼠标点击的x.y坐标获取该点的相关信息,判断是否点击在列标题行内. private void gridView_MouseDown(object sender, MouseEventArgs e) { //鼠标左键点击 i

gridview中单元格button的点击事件和onitemclick点击冲突及解决办法

如果是listview的onitemclick的点击事件与子button的点击事件冲突,很多人都知道通过对listview设置android:descendantFocusability="blocksDescendants",以及对button设置android:focus="false",来屏蔽button的焦点以及点击事件从而解决冲突.然而不幸的是,本人今天对类似的gridview设置此项属性,亲测并没有什么用. 解决办法是有的,例如把button改为text

DataGridView的按钮列的点击事件

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { DataGridViewColumn column = dataGridView1.Columns[e.ColumnIndex]; if (column is DataGridViewButtonColumn) { //这里可以编写你需要的任意关于按钮事件的操作~ Mess

DevExpress gridView列标题右键菜单管理

1.添加PopupMenuShowing事件 2.PopupMenuShowing事件中的代码如下: private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e) { if (e.MenuType == DevExpress.XtraGrid.Views.Grid.GridMenuType.Column)//判断是否是列标题的右键

GridView控件点击单元格如何获取该列的列标题

本博文Insus.NET教你实现在GridView控件中,用mouse点击某单元格之后,希望能获取到该列的列标题. 创建一个网页,创建一个GridView控件: 去cs绑定数据给GridView控件: 下面我们需要写注册click事件,以便获取被点击的行或列索引.在网页中override Render()方法,为cell添加attributes “onclick”事件. 现在我们需要为GridView控件添加一个事件,添加一个Label,用来显示所获取的列名.去.aspx的html markup

GridView修改列标题HeaderText

最近在做数据列表绑定的时候,需要数据列标题可以动态变化, 一开始想到了,通过HeaderText找到对应的Column,然后设置其HeaderText,发现不起作用: Column.HeaderText="TEST",我是写在BindGrid()之后的,难道此时不能修改列了吗? 那么,就在创建每一行数据行的时候试试呢? 在Row_Create()事件中,判断e.Row.RowType == Header的时候,设置e.Row.Cell[对应列索引].Text="TEST&qu

DevExpress GridView 那些事儿

1:去除 GridView 头上的 "Drag a column header here to group by that column" -->  点击 Run Designer  -> 找到:OptionView ->  将 ShowGroupPanel : 设置为 false ; 2:如何 显示出 GridView 自带的 搜索功能 -->  点击 Run Designer  ->  找到: OptionsFind -> 将AlwaysVisi

DevExpress实现根据行,列索引来获取RepositoryItem的方法

/// <summary> /// 根据行,列索引来获取RepositoryItem /// </summary> /// <param name="view">GridView</param> /// <param name="rowIndex">行索引</param> /// <param name="columnIndex">列索引</param>

ASP.NET中Gridview一些技巧

ASP.NET中Gridview一些技巧 一.后台覆盖掉Gridview中自动填充的值 我们可以再Gridview中的事件触发的过程中修改其中的值,而这些值将会在具体的运行过程中覆盖掉那些自动属性.这样我们就可以快捷高效的使用VS中的Gridview控件的同时,又增加一定的自主性和可操作性. 例如: ItemInserting事件:数据在插入数据库之前会触发这个事件. 如果主键是Guid类型的,就可以在此事件内处理:生成一个Guid数据,然后赋值给e.Values[“Id”]. protecte