Como ligar dois controles diferentes a um mesmo DataTable sem que as alterações de dados realizadas por um controle alterem os dados no outro

Suponha que você tenha 2 controles, ComboBox e ListBox, no mesmo formulário e a propriedade DataSource de ambos é a mesma...

Como ligar dois controles diferentes a um mesmo DataTable sem que as alterações de dados realizadas por um controle alterem os dados no outro

 

Este é um problema bastante comum. Suponha que você tenha 2 controles, ComboBox e ListBox, no mesmo formulário e a propriedade DataSource de ambos é a mesma. Então, a seleção de um item em um controle seleciona o mesmo item no outro controle. Este problema ocorre por causa da propriedade BindingContext dos controles. Por padrão, o BindingContext dos 2 controles está configurada para levar em consideração o BindingContext do formulário. Logo, o comportamento padrão dos controles é compartilharem o mesmo BindingContext. E é por isso que as seleções ficam sincronizadas. Se você não deseja este comportamento, crie um novo BindingContext para, pelo menos, um dos controles.

 

ComboBox1.DataSource = DataSet.Tables("Items")

ComboBox1.ValueMember = "CustomerID"

ComboBox1.DisplayMember = "CustomerID"

 

ListBox1.BindingContext = New BindingContext()

 

ListBox1.DataSource = dataset.Tables("Items")

ListBox1.ValueMember = "CustomerID"

ListBox1.DisplayMember = "CustomerID"

Artigos relacionados