vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
dynamisches Objekt unsichtbar 
Autor: Physiker2006
Datum: 17.01.11 02:02

Hallo liebe Foren-Mitglieder,

wieder einmal komme ich nach langem Probieren mit meinem VB-Programm nicht weiter. Das Problem:

zur Laufzeit erstelle ich in einer Schleife n GroupBoxes und in jedem Schritt auch ein Label, welches das Child der eben erstellten Box ist. Es gibt also n GroupBoxes und n Labels, wobei GroupBox(n) das Parent von Label(n) ist. Quellcode:
    '## Sub, die das Layout neu aufbaut
    Sub NewLayout(ByVal Count As Integer)
        If Count > 0 Then
            Dim GrpBox(Count) As GroupBox
            Dim lbl(Count) As Label
            Dim Xpos As Integer = 10
            Dim YposGrp As Integer = 10
 
            '## Schleife zur Erstellung der Groupboxen
            For AnzGrp As Integer = 0 To Count - 1
                GrpBox(AnzGrp) = New GroupBox
                Controls.Add(GrpBox(AnzGrp))
                GrpBox(AnzGrp).Parent = Me
                GrpBox(AnzGrp).Name = "GrpBox" & AnzGrp.ToString
                GrpBox(AnzGrp).Size = New Size(700, 100)
                GrpBox(AnzGrp).Text = Namearray(AnzGrp) '## global definiert
                GrpBox(AnzGrp).Location = New Point(Xpos, YposGrp)
 
                YposGrp += 105 '## verschiebung der elemente bei jedem durchlauf
 
                '## Erstellung des Labels
                lbl(AnzGrp) = New Label
                Controls.Add(lbl(AnzGrp))
                lbl(AnzGrp).Parent = GrpBox(AnzGrp)
                lbl(AnzGrp).Name = "lbl" & AnzGrp.ToString
                lbl(AnzGrp).Size = New Size(660, 40)
                lbl(AnzGrp).Text = "Hallo Test " & AnzGrp.ToString
                lbl(AnzGrp).Location = New Point(Xpos, GrpBox( _
                  AnzGrp).Location.Y + 7)
 
                '## Test, ob die labels zu den GroupBoxes hinzugefügt wurden
                If GrpBox(AnzGrp).Controls.ContainsKey("lbl" & AnzGrp.ToString) _
                  Then
                    MsgBox("label existiert")
                Else
                    MsgBox("label existiert nicht")
                End If
            Next
        End If
    End Sub
So, was jetzt passiert ist Folgendes: die Boxen werden alle korrekt erzeugt. Die Label werden erzeugt(das liefert das Testergbnis der if-Abfrage), angezeigt wird aber nur das erste Label, also lbl(0) mit dem Text "Hallo Test 0". Die Positionen der anderen (location.x,y) habe ich mir auch ausgeben lassen und diese sind auch korrekt. Ich habe den Eindruck, dass nur im ersten Schleifendurchlauf das Label nach der GroupBox erzeugt wird und ich denke, es liegt irgendwie doch ein parent-Fehler vor. Leider habe ich keine Ahnung, wie ich den beheben kann und die Beziehungen der Objekte untereinander überprüfen kann. Was mich aber am meisten wundert: warum klappt es immer beim ersten Label? bei einem Count von 3 ist das erste Label sichtbar, die anderen beiden nicht. Ich habe festgestellt, dass die Reihenfolge der Parent-casts ziemlich ausschlaggebend ist, es kann also auch daran liegen...

Ich hoffe, dass ihr mir helfen könnt. Einen guten Start in die Woche wünscht

der Physiker2006

Liebe Grüße in die Nacht

A doctor each day keeps the apple away

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
dynamisches Objekt unsichtbar1.262Physiker200617.01.11 02:02
Re: dynamisches Objekt unsichtbar912sudave17.01.11 04:43
Re: dynamisches Objekt unsichtbar849ModeratorDaveS17.01.11 05:55
Re: dynamisches Objekt unsichtbar828Physiker200617.01.11 11:45

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel