Hallo!
Hier mal ein einfaches Beispiel zu meinem obigen Vorschlag.
Es handelt sich um ein "UserControl1" (UC), das einen Text im
Label anzeigt und per Button "geschlossen" werden kann.
Zu diesem Zweck wird ein "Closed"-Event ausgelöst und das
UC unsichtbar gemacht.
Public Class UserControl1
Dim WithEvents btnExit As New Button _
With {.Parent = Me, .Top = 50, .Width = 180}
Dim lbl As New Label With {.Parent = Me, .Height = 30}
Public Event Closed(ByVal sender As Object, ByVal e As EventArgs)
Public WriteOnly Property Headline() As String
Set(ByVal value As String)
lbl.Text = value
End Set
End Property
Private Sub UserControl1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
btnExit.Text = "Beenden"
Me.BackColor = Color.Yellow
Me.Width = 200 : Me.Height = 100
End Sub
Public Sub btnExit_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnExit.Click
Me.Visible = False
RaiseEvent Closed(Me, New EventArgs)
End Sub
End Class Auf dem Formular wird eine Liste angelegt, die 16 Instanzen
des UC aufnimmt. Zu jedem Control wird ein Handler erstellt,
der das "Closed"-Event verarbeitet (im Load-Event der Form).
In diesem Handler wird das jeweils nächste UC in der Liste
sichtbar gemacht (ucClosed_Click).
Public Class frmFürUC
Dim uclist As New List(Of UserControl1)
Private Sub frmFürUC_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
For i As Integer = 0 To 15
Dim uc As New UserControl1 _
With {.Headline = "Usercontrol Nummer " & CStr(i)}
uc.Parent = Me : uc.Top = 20 : uc.Tag = CStr(i)
AddHandler uc.Closed, AddressOf ucClosed_Click
uclist.Add(uc)
Next i
End Sub
Private Sub ucClosed_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs)
Dim id As Integer = CInt(CType(sender, UserControl1).Tag)
If id < 15 Then
uclist(id + 1).Visible = True
Else
uclist(0).Visible = True
End If
End Sub
End Class Zweckmäßig ist es vermutlich, wenn Du Deine verschiedenen UserControls
von einem gemeinsamen "Basis-UserControl" ableitest.
Die Gestaltung der Oberfläche und das Umschalten zwischen den UCs
ist stark abhängig vom Handling der Datenstrukturen, die in diesen
Controls jeweils angezeigt bzw. editiert werden sollen.
Beitrag wurde zuletzt am 04.12.11 um 22:43:47 editiert. |