Удаление связанного элемента из DataGridView - PullRequest
0 голосов
/ 19 октября 2010

У меня есть список объекта, установленный в DataSource объекта BindingSource, установленный в DataSource объекта DataGridView. Затем я добавил DataGridViewButtonColumn, который я хочу щелкнуть, чтобы удалить эту запись из коллекции. Поэтому я просто вызываю collection.RemoveAt (e.rowIndex) из события DataGridView CellClick. Однако это создает исключение IndexOutOfRange; «1 не имеет значения» ..

Так что здесь происходит? Возможно, у меня есть смутная идея, но я хотел бы точно понять, какие события не выполняются и т. Д. И что мне нужно сделать, чтобы правильно выполнить это действие?

EDIT: Кажется, этого не произойдет, если я использую BindingList .. Но при использовании List, я получаю эту проблему ..

1 Ответ

1 голос
/ 19 октября 2010

Причина, по которой вы видите ошибку, заключается в том, что в конечном итоге вы привязываетесь к List.List не включает уведомления об изменениях, которые необходимо получить вашему DataGridView, чтобы отразить сделанные вами изменения.

Если вы действительно хотите обойти эту проблему, вы можете сделать следующее: непосредственно перед тем, как вносить изменения в List, установите для свойства BindingSource DataSource значение Nothing.Когда вы закончите вносить изменения, сбросьте ваш List в DataSource.

Это довольно уродливое решение, как вы можете себе представить.То, что вы захотите сделать, это связать с объектом, который реализует IBindingList, либо с созданной вами пользовательской коллекцией, либо с BindingList .

.
Обзор элемента управления DataGridView (Windows Forms)

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