You are probably binding AGAIN instead of repopulating your binding source.
Consider the following:
Private Sub RefreshBindings
TextBox.DataBindings.Add("Text", myBindingSource, "TextProperty")
End Sub
Private Sub LoadForm Handles Me.Load
myBindingSource.DataSource = New MyBindingObject()
RefreshBindings()
End sub
Private Sub btnSave_Click Handles btnSave.Click
Save(myBindingSource)
RefreshBindings()
End Sub
That exact code will throw this error because when you save your changes to the datasource you are 'refreshing' your bindings. No, what actually happens is that you set another binding on your TextBox. In this case the binding already exists and an Exception is thrown.
Consider the following code, which WILL run.
Private Sub RefreshBindings
myBindingSource.DataSource = New MyBindingObject()
End Sub
Private Sub LoadForm Handles Me.Load
TextBox.DataBindings.Add("Text", myBindingSource, "TextProperty")
RefreshBindings()
End sub
Private Sub btnSave_Click Handles btnSave.Click
Save(myBindingSource)
RefreshBindings()
End Sub
In this code the binding is only assigned once to the TextBox, but the DataSource of myBindingSource is refreshed. In other words, your binding stays the same, while your datasource is refreshed or repopulated.
Hope that helps! :)