Пример кода для проверки функциональности классов BindingSource
и Binding
.
Создайте таблицу данных с некоторыми полями (как указано в вопросе);используйте DataTable в качестве источника данных объекта BindingSource
.
BindingSource затем устанавливается в качестве источника данных ComboBox (здесь ComboBox1
).
DisplayMember
и ValueMember
также устанавливаются в требуемые поля (установите эти свойства, возможно, перед назначением источника данных элемента управления).
Затем добавьте Binding к свойству TextBox Text
, используя тот же источник данных (ранее определенный объект BindingSource
).
Когда ComboBox SelectedItem
изменяется (в коде или из-за выбора пользователя), свойство TextBox.Text
будет соответственно обновлено:
Friend bindingSource As BindingSource = Nothing
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable("TestTable")
dt.Columns.AddRange({
New DataColumn("sid", GetType(Integer)) With {
.AutoIncrement = True, .AutoIncrementStep = 1, .AutoIncrementSeed = 1
},
New DataColumn("sname", GetType(String)),
New DataColumn("surl", GetType(String))
})
dt.Rows.Add(New Object() {Nothing, "Google", "www.google.com"})
dt.Rows.Add(New Object() {Nothing, "Bing", "www.bing.com"})
dt.Rows.Add(New Object() {Nothing, "Yahoo", "www.yahoo.com"})
bindingSource = New BindingSource(dt, "")
ComboBox1.ValueMember = "sid"
ComboBox1.DisplayMember = "sname"
ComboBox1.DataSource = bindingSource
TextBox1.DataBindings.Add(
New Binding("Text", bindingSource, "surl", False, DataSourceUpdateMode.OnPropertyChanged))
ComboBox1.SelectedIndex = 0
End Sub