2013-09-19 3 views
0

меня такая ситуация:Редактировать коллекция BindingSource

У меня есть список или массив (haven't deciced который один лучше для моей цели, но это не распространяется материя) некоторых объектов (например, список лиц). В моей форме есть DataGridView, где я хочу видеть всех людей и их атрибуты. Атрибуты Person могут быть отредактированы во время выполнения, и я хочу немедленно увидеть эти изменения в DataGridView. Я использовал для этого BindingSource:

Dim _persons As New List(Of Person) 
Dim persons As BindingSource = New BindingSource() 

persons.DataSource = _persons 
myGridView.DataSource = persons 

Теперь, когда я добавить/удалить человека с помощью BindingSource (лиц), это работает отлично. Это изменение я вижу сразу. Но что, если я хочу отредактировать одного человека? Позволяет иметь этот класс:

Public Class Person 

    Public Property FirstName As Integer 
    Public Property SecondName As String 
    Public Property Address As String 

End Class 

Если я хочу, чтобы изменить имя Я могу сделать это следующим образом:

_persons(1).FirstName = "John" 

Но это непосредственно через список, а не через BindingSource, так это изменение не вступит в DataGridView. Есть ли способ сделать это через BindingSource, чтобы повлиять на это редактирование в DataGridView?

Извините, но это первый раз, когда я работаю с BindingSource, так что это, наверное, глупый вопрос. Спасибо вам, ребята.

ответ

2

Вы должны влиять на BindingSource непосредственно (не List вы использовали для создания BindingSource), то есть:

DirectCast(persons(1), Person).FirstName = "John" 
+0

+ myGridView.Refresh(), и она работает. Отлично, спасибо! – DanielH

+0

@ DanielH Добро пожаловать. – varocarbas