Mehrere Labels in Tabcontrol erzeugen

Autun

Grünschnabel
Nabend!

Ich bin jetzt schweren Herzens von VB6 auf .net umgestiegen und natürlich gleich auf die erste Hürde gestoßen. "Control Arrays" gibts nicht mehr, jetzt muss man alles per Code erstellen.

Mein Ziel ist es mehrere Labels zu erzeugen, die allerdings nicht auf der Form selbst, sondern in einem Tabcontrol (das auf der Form platziert ist) erscheinen. Ich hab mal bei Google recherchiert und bin neben ein paar erschreckend langen Codebrocken auf etwas schön handliches gestoßen:

Code:
Sub ErstelleTabelle()
        Dim tmpItem 'in den Deklarationsbereich des Formulares
        For tmpItem = 0 To 10
            Dim NewLabel As New Label
            With NewLabel
                .Name = "lbl_Test" & tmpItem
                .Text = "Irgendwas"
                .AutoSize = True
                .Left = Mainmenue.lbl_Test.Left
                .Top = Mainmenue.lbl_Test.Top * tmpItem + 1
                .Parent = Mainmenue.Tab_TabPage2
                .Visible = True
                'weitere Eigenschaften festlegen
                'eventuell einen oder mehrere AddHandler hinzufügen
            End With
        Next
    End Sub

(Quelle: http://www.wer-weiss-was.de/theme205/article5149917.html)

Wenn ich das aber im Form_Load Ereignis aufrufe, dann passiert garnichts. :(
Interessanterweise werden die Labels aber angezeigt, wenn ich als Parent nur die Form (hier also "Mainmenue") angebe.

Gibt es da irgendwas was man beachten muss wenn man mehrere Label (oder sonstige Controls) auf einer Tab-Seite erstellen möchte? Bin für jeden Hinweis dankbar! :)

Viele Grüße
Autun
 
Ersetze "Mainmenue" durch "Me".
Code:
NewLabel.Left = Me.lbl_Test.Left
NewLabel.Top = Me.lbl_Test.Top * tmpItem + 1
NewLabel.Parent = Me.Tab_TabPage2
Und ich würde die Sub "ErstelleTabelle" nicht im Form.Load-Event aufrufen sondern im Konstruktor:
Code:
Public Sub New()
    ' This call is required by the Windows Form Designer.
    InitializeComponent()
    ' Add any initialization after the InitializeComponent() call.
    ErstelleTabelle()
End Sub
 
Zuletzt bearbeitet:
Ha!

Ich bin ja auch blöd! :D
Gerade bin ich mehr oder weniger aus Zufall darauf gekommen, dass ich ja einen "SplitContainer" auf der Form habe. Scheinbar dient der nicht nur dem vereinfachten Basteln in der IDE, wie ich zuerst dachte, sondern man muss ihn auch als Parent angeben, wenn man ein Control da rein-erstellen möchte.

@Shakie:
Danke für die Antwort!
Ich hatte die Sub in ein Modul ausgelagert, desswegen musste ich "Mainmenue" anstatt "Me" verwenden. Hätte ich wohl in meiner Frage erwähnen müssen... sry...
Den Tipp mit dem Konstruktor werd ich aber beherzigen. :)

Viele Grüße
Autun
 

Neue Beiträge

Zurück