Я предлагаю вам использовать BindingSource
, чтобы сделать это.
Попробуйте это:
1 - Объявите тип вашей переменной BindingSource
с событиями.Кроме того, объявите, что ваш набор данных будет использоваться для данных.
Dim WithEvents BS As New BindingSource
Dim ds As New DataSet
2- В вашем Form
Load
событии запросите ваши данные и свяжите их как с Binding Source, так и с элементом управления ComboBox
.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim con As New SqlConnection("Data Source=xxxx;Initial Catalog=ltLeavers;Integrated Security=True")
Dim da As New SqlDataAdapter("SELECT * FROM dbo.mytable", con)
da.Fill(ds, "myPopulatedTable")
ComboBox1.DisplayMember = "id"
ComboBox1.DataSource = ds.Tables("myPopulatedTable")
'Here the new code'
BS.DataSource = ds
BS.DataMember = "myPopulatedTable"
End Sub
3- Добавьте Sub Procedure
для отображения ваших данных в других элементах управления текстовыми полями.
Private Sub DISPLAYRECORD(Optional ByVal table As String = "myPopulatedTable")
TextBox1.Text = ds.Tables(table).Rows(Me.BS.Position)("column1").ToString
TextBox2.Text = ds.Tables(table).Rows(Me.BS.Position)("column2").ToString()
TextBox2.Text = ds.Tables(table).Rows(Me.BS.Position)("column3").ToString()
End Sub
4- В событии PositionChanged
вашего источника привязки вызовите этот субпроцедура (см. выше)
Private Sub BS_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles BS.PositionChanged
DISPLAYRECORD()
End Sub
5- И наконец, чтобы синхронизировать данные с выбором ComboBox
, вам необходимо изменить положение этого источника привязки в соответствии с выбором индекса ComboBox
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
BS.Position = ComboBox1.SelectedIndex
End Sub