Nutze eine Daten-Klasse in der Liste und Datenbindung!!!
Imports System.ComponentModel
Public Class frmBinding
Private Class DataClass
Implements INotifyPropertyChanged
Dim _oz As String = ""
Dim _bez As String = ""
Public Property OZ As String
Set(value As String)
_oz = value
RaiseEvent PropertyChanged _
(Me, New PropertyChangedEventArgs("OZ"))
End Set
Get
Return _oz
End Get
End Property
Public Property Bez As String
Set(value As String)
_bez = value
RaiseEvent PropertyChanged _
(Me, New PropertyChangedEventArgs("Bez"))
End Set
Get
Return _bez
End Get
End Property
Public Event PropertyChanged(sender As Object, _
e As PropertyChangedEventArgs) _
Implements INotifyPropertyChanged.PropertyChanged
End Class
Dim txtOZ As New TextBox With {.Parent = Me}
Dim txtBez As New TextBox With {.Parent = Me, .Top = 50}
Dim datalst As New List(Of DataClass)
Dim bs As New BindingSource With {.DataSource = datalst}
Dim WithEvents bntNew As New Button With _
{.Parent = Me, .Top = 100, .Text = "New"}
Dim WithEvents btnDelete As New Button With _
{.Parent = Me, .Top = 150, .Text = "Del"}
Dim WithEvents btnNext As New Button With _
{.Parent = Me, .Top = 200, .Text = "Next"}
Dim WithEvents btnPrev As New Button With _
{.Parent = Me, .Top = 250, .Text = "Prev"}
Private Sub frmBinding_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
datalst.Add(New DataClass)
datalst(0).Bez = "Bez0" : datalst(0).OZ = "OZ0"
bs.ResetBindings(False)
txtOZ.DataBindings.Add(New Binding("Text", bs, "OZ"))
txtBez.DataBindings.Add(New Binding("Text", bs, "Bez"))
End Sub
Private Sub bntNew_Click(sender As Object, _
e As System.EventArgs) Handles bntNew.Click
datalst.Add(New DataClass)
bs.ResetBindings(False)
bs.Position = bs.Count - 1
End Sub
Private Sub btnPrev_Click(sender As Object, _
e As System.EventArgs) Handles btnPrev.Click
If bs.Position > 0 Then bs.Position -= 1
End Sub
Private Sub btnNext_Click(sender As Object, _
e As System.EventArgs) Handles btnNext.Click
If bs.Position < bs.Count - 1 Then bs.Position += 1
End Sub
Private Sub btnDelete_Click(sender As Object, _
e As System.EventArgs) Handles btnDelete.Click
datalst.RemoveAt(bs.Position)
bs.ResetBindings(False)
End Sub
End Class |