Не удалось проверить, но не может удалить в DataGridView - PullRequest
4 голосов
/ 03 мая 2010

Это в моей функции RowValidation DataGridView:

        DataGridViewRow row = viewApplications.Rows[e.RowIndex];
        if (row.Cells[colApplyTo.Index].Value == (object)-1) {
            if (MessageBox.Show("Row #" + (e.RowIndex + 1) + " is not assigned to a charge. Would you like to correct this? (If no, the row will be deleted)", "Invalid Row", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) {
                viewApplications.Rows.RemoveAt(e.RowIndex);
            } else {
                e.Cancel = true;
            }
        }

Однако существует проблема: если пользователь говорит «нет», то есть он или она не исправляет эту строку, я не могу удалить ее, как пытаюсь сделать. Я получаю исключение: InvalidOperationException: Операция не может быть выполнена в этом обработчике событий

Как я могу исправить это и при этом удалить строку?

1 Ответ

11 голосов
/ 03 мая 2010

Чтобы удалить строку вне обработчика, вы можете вызвать BeginInvoke:

BeginInvoke(new Action(delegate { viewApplications.Rows.RemoveAt(e.RowIndex); }));

Это запустит код в делегате во время следующего цикла сообщений.

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