`
ydbc
  • 浏览: 715056 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

devExpress之GridView小技巧(三):列标题点击事件

 
阅读更多

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

在这里使用GridViewMouseDown事件。

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

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列标题!");

}

}

}

}

作者:叉叉哥 转载请注明出处:http://blog.csdn.net/xiao__gui/article/details/7941086

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics