Controls auf Panel werden nicht angezeigt

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Croasider.

    Controls auf Panel werden nicht angezeigt

    Hallo @ all

    Ich füge einem Panel so neue Controls hinzu:

    VB.NET-Quellcode

    1. Panel1.Controls.Clear()
    2. Dim cover As New PictureBox
    3. Dim albumName As New Label
    4. Dim interpret As New Label
    5. With albumName
    6. .Text = mp3.Album
    7. .Location = New Point(cover.Location.X, cover.Location.Y + cover.Height + 4)
    8. .Font = New Font(.Font.SystemFontName, .Font.Size, FontStyle.Bold)
    9. .AutoSize = True
    10. .Cursor = Cursors.Hand
    11. End With
    12. ' Das ganze auch noch für die anderen beiden Controls
    13. Panel1.Controls.Add(cover)
    14. Panel1.Controls.Add(albumName)
    15. Panel1.Controls.Add(interpret)


    Es kommt zu keinem Compiler- oder Laufzeitfehler. Trotzdem werden die Controlls nur manchmal angezeigt. Meistens sind kurzzeitig die Konturen sichtbar aber diese verschwinden nach ganz kurzer Zeit wieder. Jemand eine Idee woran das liegen kann? Ein "Panel1.bringToFront()" nützt leider auch nichts.

    Bin für jede Hilfe dankbar. Viele Grüße
    Croasider

    VB.NET-Quellcode

    1. For Each c As Control In Panel1.Controls
    2. c.Show()
    3. Next


    führt leider zu dem selben Ergebniss. Ich habe schon daran gedacht ob die Controls, da sie ja in einer Funktion deklariert und nicht global sind vom GarbageCollector (wenn es so einen in VB.NET gibt) entsort werden aber ab und zu funktioniert es ja... Auch mit der Kombination "c.brindtoFront" nach dem ".show" bringt keine weiteren Ergebnisse.
    Huhu,

    .Show() hat damit überhaupt nichts zu tun. Die Controls verdecken sich einfach nur. Nimm Dir zum Testen mal einfach ein FlowLayoutPanel und lass die Anweisungen, wo Du Locations setzt einfach mal weg.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    SpaceyX schrieb:

    .Show() hat damit überhaupt nichts zu tun

    Huh? ==>>Control.Show-Methode
    .Location für alle Elemente festlegen (bezogen auf die linke, ober Ecke des Panels). Und ja, für jedes Control incl. Panel Show ausführen.
    Wenn Du ein Control in einen Container packst, ists mir noch nie untergekommen, dass ich .Show() aufrufen muss, damit es dargestellt wird.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Ich habe das Problem auch.

    Wenn ich in dem Panel nichts habe wird alles angezeigt.
    Wenn ich aber einen Prozess dort einspeise wird alles ausgeblendet.

    Alles andere kann ich dadrin machen aber nicht das..

    Kann da jemand zwischendurch helfen? =)
    ähm - sorry - du redest wirr:
    Wenn ich in dem Panel nichts habe wird alles angezeigt.
    wat??

    Wenn ich aber einen Prozess dort einspeise wird alles ausgeblendet.
    wie speist man einen Prozess in ein Panel ein??

    Kann da jemand zwischendurch helfen? =)
    Ich :D - mit folgendem Tipp und Bitte:
    Mach einen eigenen Thread auf, und schildere dein Problem auf verständliche Weise.
    Warum fügst Du die Controls von Hand ein?
    Mach es doch im Designer.
    Oder
    Mach Dir ein UserControl mit diesen 3 Controls und füge dieses dynamisch ein.
    Wie das funktioniert, schreibst Du am besten aus der Prozedur InitializeComponents() ab, nachdem Du die Controls / das UserControl im Designer eingefügt hast.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!