dev 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);
            }

        }

但是程序运行时会有些小小的问题,无论你双击这个gridview的任何位置,都会弹出当前gridview焦点行对应的编辑界面。最理想的效果是只双击数据行才会弹出窗口而双击gridview的非数据行位置则不弹出,因此我们需求捕捉鼠标的位置,这里我们用到了GridHitInfo

//双击弹出编辑界面
        private void gridView1_DoubleClick(object sender, EventArgs e)
        {
            if (gridView1.FocusedRowHandle < 0) return;
            try
            {
                //双击某一单元格,执行代码
                if (hInfo.InRowCell)
                {
                    //TODO:双击弹出编辑界面
	        }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

        /// <summary>
        /// 获取鼠标坐标
         /// </summary>
        DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hInfo = 
		new DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo();
        private void gridView1_MouseDown(object sender, MouseEventArgs e)
        {
            hInfo = gridView1.CalcHitInfo(e.Y, e.Y);
        }


首先定义一个GridHitInfo对象,在gridview的MouseDown事件中初始化这个对象,用于保存鼠标按下坐标位置(这里的位置是相对gridview的位置而不是鼠标在界面中的位置)。这样处理后,只有双击数据行位置才会弹出编辑窗口,而双击其他位置则无效。

本文中的上hInfo还可以定义不同的区域的不同处理方式,用处很大。

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页