您的位置:首页 > 其它

dev gridview控件双击事件

2014-10-31 13:23 253 查看
使用过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还可以定义不同的区域的不同处理方式,用处很大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: