C#WinForm Datagrid双击事件

时间:2010-10-17 20:33:38

标签: c# .net

数据网格是否有双击事件?当用户双击一行时,我正在尝试使用此代码打开详细信息表单。

http://www.codeproject.com/KB/grid/usingdatagrid.aspx

我尝试通过双击控件添加它,但它改为dataGrid1_Navigate。

4 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

听起来你需要一种方法来获取给定控件的所有事件的列表,而不是找到默认事件(当你在设计器中双击一个控件时,VS会给你什么) 有几种方法可以做到这一点:

单向选择网格。 然后单击事件图标将属性窗口转换为事件列表,然后双击要对事件进行编码的事件。

或者,切换到代码视图,在代码窗口左上角的对象下拉列表中选择网格,然后从事件列表中该控件的所有事件列表中选择所需的事件(代码窗口的右上角)

答案 2 :(得分:0)

在设计模式中双击控件时获得的是控件设计者认为最常用的事件,在这种情况下它是Navigate

但是,是的,这个控件有两个双击事件:

public partial class Form1 : Form
{
    DataGrid grid = new DataGrid();

    public Form1()
    {
        InitializeComponent();

        grid.DoubleClick += new EventHandler(grid_DoubleClick);
        grid.MouseDoubleClick += new MouseEventHandler(grid_MouseDoubleClick);            
        grid.Dock = DockStyle.Fill;

        this.Controls.Add(grid);
    }

    void grid_MouseDoubleClick(object sender, MouseEventArgs e)
    {            
    }

    void grid_DoubleClick(object sender, EventArgs e)
    {            
    }
}

但是,当您双击控件上的任何位置时,这两个事件都会运行,并且它们不直接为您提供有关所选行的信息。你可以在grid_MouseDoubleClick处理程序中双击,方法是根据被点击的点(e.Location)从控件中获取它,这就是它的工作原理例如,TreeView控件。快速浏览一下,我没看到控件是否有这样的方法。如果您没有特别的理由使用此控件,则可能需要考虑使用DataGridView。

答案 3 :(得分:0)

我尝试了@ steve76的代码,但不得不稍微调整它以适用于Windows Embedded CE 6.0系统。这对我有用。

private void dataGrid1_DoubleClick(object sender, EventArgs e)
{
    Point pt = dataGrid1.PointToClient(Control.MousePosition);
    DataGrid.HitTestInfo info = dataGrid1.HitTest(pt.X, pt.Y);
    int row;
    int col;
    if (info.Column < 0)
        col = 0;
    else
        col = info.Column;
    if (info.Row < 0)
        row = 0;
    else
        row = info.Row;
    object cellData = dataGrid1[row, col];
    string cellString = "(null)";
    if (cellData != null)
        cellString = cellData.ToString();
    MessageBox.Show(cellString, "Cell Contents");
}