捕获datagridview中的单行

时间:2010-12-01 19:28:46

标签: .net winforms datagridview

我有一个.NET Windows应用程序。

我有一个DataGridView,里面有几行。我添加了一个包含按钮的列,以允许用户编辑一行。这会弹出一个新的表单/对话框 - 我的编辑表单。

// Add a CellClick handler to handle clicks in the button column.
dgv.CellClick += new DataGridViewCellEventHandler(dgv_CellClick);

触发此代码的代码是:

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{    
    if (e.ColumnIndex == buttonCell)
    {
        // Get the id number
        int number = Convert.ToInt32(dgv.Rows[e.RowIndex].Cells[0].Value);


        EditForm edit = new EditForm(number);
        edit.ShowDialog();                   
    }
}

问题

我的编辑表单显示(正确)。我进行了更改,并关闭了表单。然后它再次加载!它对我网格中的相同行数执行此操作。 IE浏览器。它为DataGrid中的每一行触发上面的代码一次。

我该怎样防止这种情况?有更优雅的解决方案吗?

2 个答案:

答案 0 :(得分:2)

我会确保您不会多次注册CellClick事件。

即,您不是多次调用此代码(例如每次向DGV添加一行时):

dgv.CellClick += new DataGridViewCellEventHandler(dgv_CellClick); 

答案 1 :(得分:0)

  

要确定单击单元格内容的时间,请处理CellContentClick事件。

尝试使用dgv.CellContentClick,看看是否能解决问题。查看datagridview.cellclick event

的文档