开发者

Capture single row in a datagridview

I have a .NET windows app.

I have a DataGridView which has a few rows in it. I had added a column containing buttons to allow the user to edit a row. This pops up a new form/dialog - my edit form.

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

The code which fires this is:

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

Problem

My edit form displays (correctly). I make my changes, and close the form. It then loads again! It does this for the same number of rows in my Grid. Ie. It fires th开发者_JS百科e code above once for each row in the DataGrid.

How can I prevent this? Is there a more elegant solution?


I would make sure you're not registering the CellClick event more than once.

i.e., that you're not calling this code more than once (like each time you add a row to your DGV):

dgv.CellClick += new DataGridViewCellEventHandler(dgv_CellClick); 


To determine when the cell contents are clicked, handle the CellContentClick event.

Trying using dgv.CellContentClick instead and see if that fixes the issue. Check the docs for the datagridview.cellclick event

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜