Захватить одну строку в сетке данных - PullRequest
2 голосов
/ 01 декабря 2010

У меня есть приложение .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();                   
    }
}

Задача

Моя форма редактирования отображается (правильно). Я делаю свои изменения и закрываю форму. Затем он загружается снова! Это делается для того же количества строк в моей сетке. То есть. Он запускает приведенный выше код один раз для каждой строки в DataGrid.

Как я могу предотвратить это? Есть ли более элегантное решение?

Ответы [ 2 ]

2 голосов
/ 01 декабря 2010

Я бы удостоверился, что вы не регистрируете событие CellClick более одного раза.

т.е., что вы не вызываете этот код более одного раза (как каждый раз, когда вы добавляете строку в DGV):

dgv.CellClick += new DataGridViewCellEventHandler(dgv_CellClick); 
0 голосов
/ 01 декабря 2010

Чтобы определить, когда щелкается содержимое ячейки, обработайте событие CellContentClick.

Попытайтесь использовать вместо этого dgv.CellContentClick и посмотрите, решит ли это проблему.Проверьте документы на событие datagridview.cellclick

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...