Devexpress GridControl GridView双击事件优化
devexpress gridview控件添加双击事件,只有点击行数据的时候才执行的解决办法
使用过dev gridview控件的朋友都知道,gridview本身的DoubleClick 事件有一点小小的问题。 例如要实现双击girdview中的明细弹出该条记录的维护界面的功能。首先定义gridview的DoubleClick 事件
//双击弹出编辑界面 private void gridView1_DoubleClick(object sender, EventArgs e) { if (gridView1.FocusedRowHandle < 0) return; try { //TODO:双击弹出编辑界面 } catch (Exception ex) { MessageBox.Show(ex.Message); } }
GarsonZhang www.yesdotnet.com
但是程序运行时会有些小小的问题,无论你双击这个gridview的任何位置,都会弹出当前gridview焦点行对应的编辑界面。最理想的效果是只双击数据行才会弹出窗口而双击gridview的非数据行位置则不弹出,因此我们需求捕捉鼠标的位置,这里我们用到了 GridHitInfo
。
/// <summary> /// 双击查看 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void View_DoubleClick(object sender, EventArgs e) { if (hitInfo != null && (!hitInfo.InRow)) return; DoView(_Buttons.GetButtonByName(YESWin.UI.Core.RibbonButton.RibbonCommonButtonName.View)); } DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hitInfo; private void Value_MouseDown(object sender, MouseEventArgs e) { if (_SummaryView is GridView) hitInfo = (_SummaryView as GridView).CalcHitInfo(e.X, e.Y); else hitInfo = null; }
GarsonZhang www.yesdotnet.com
首先定义一个GridHitInfo对象,在gridview的MouseDown事件中初始化这个对象,用于保存鼠标按下坐标位置(这里的位置是相对gridview的位置而不是鼠标在界面中的位置)。这样处理后,只有双击数据行位置才会弹出编辑窗口,而双击其他位置则无效。
本文中的上hInfo还可以定义不同的区域的不同处理方式,用处很大。
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post YES开发框架