Mehrere Dynamische Objekte ansprechen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Mehrere Dynamische Objekte ansprechen

    Hallo Community von VB-Paradise,

    ich bin neu hier auf diesem Forum und ich bitte um die Hilfe von euch.

    Und zwar:

    Ich will in meinem Projekt PictureBoxen in ein Panel einfügen (dynamisch), wie das geht weiß ich

    Nach dem hinzufügen will ich aber alle dynamisch erzeugten PictureBoxen ansprechen um z.B. die Farbe zu verändern

    Über eine schnelle Antwort würde ich mich freuen

    MfG

    *Thema verschoben* ~NoFear23m

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    Willkommen im Forum.
    Erstell Dir klassenweit eine List(Of PictureBox) und wenn Du eine dynamisch erstellte PicBox dem Panel hinzufügst, füge der List(Of PictureBox) die neue PicBox ebenfalls hinzu. Dann hast Du immer alle PicBoxen beieinander und kannst sie bei Bedarf alle in einem Rutsch ansprechen/bearbeiten.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hi,

    mit einer Schleife ist dies vermutlich am Simpelsten gelöst, aber um die Controls einzeln anzusprechen ist vermutlich VaporiZeds Ansatz der bessere, jedoch kann ich dem auch nicht ganz folgen ^^

    Schleifen-Variante:

    VB.NET-Quellcode

    1. For Each PB_C As PictureBox In flp_Anwers.Controls ' flp_Answers ist hier ein FlowLayoutPanel
    2. PB_C.BackColor = Color.DimGray
    3. Next



    List(Of ...) ist in ettlichen Fällen Genial, im Prinzip ist es einem Array nicht unähnlich, bietet aber deutlich mehr funktionalität, die ... einfach durch das Ersetzen, was du auflisten möchtest, String, Integer oder whatever. Kann Indexbasiert arbeiten wie ein Array also z.B. "ListName.Item(0)" ist das erste in der Liste usw. durchaus empfehlenswert sich hier einzulesen.

    LG
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „asusdk“ ()

    Naja ich hab halt ein FlowLayoutPanel verwendet, im normalfall sollte es auch gehen wenn du alle Controls deiner Form, oder eines normalen Panel nehmen möchtest dann halt

    statt

    VB.NET-Quellcode

    1. For Each PB_C As PictureBox In flp_Anwers.Controls


    VB.NET-Quellcode

    1. For Each PB_C As PictureBox In Form1

    oder

    VB.NET-Quellcode

    1. For Each PB_C As PictureBox In PanelWhatever


    LG
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    asusdk schrieb:

    ist vermutlich VaporiZeds Ansatz der bessere, jedoch kann ich dem auch nicht ganz folgen
    :?:

    VB.NET-Quellcode

    1. Private ReadOnly MyPicBoxList As New List(Of PictureBox)
    2. '...
    3. Dim NewPicBox As New PictureBox
    4. '...
    5. Panel1.Controls.Add(NewPicBox)
    6. MyPicBoxList.Add(NewPicBox)
    7. '...
    8. For Each PicBox In MyPicBoxList
    9. PicBox.Visible = False
    10. Next
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed

    Das du es so meintest ist mir durchaus klar, aber:

    Sind die Controls in der Liste dann denn nciht eigene Controls bzw. eben andere als die die du der Form hinzufügst ? Denn du fügst ja so "neu" erstellte Controls bildlich gesprochen in 2 Listen ein. Gut evtl. hab ich hier gereade einen Denkknoten in der Birne ^^
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Nein, man fügt dasselbe Objekt quasi 2 Listen hinzu. Wenn das Objekt in der einen Liste gelöscht wird, ist es in der anderen auch nix mehr wert. Aber wenn das Objekt nur aus der einen Liste entfernt wird, also aus der Liste rausfliegt, ist es in der anderen noch da. Die Existenz wird dann nicht vernichtet, sondern nur die Zugehörigkeit.
    --> Selbes Objekt -> selbe Referenz -> nur ein Objekt. Aber in 2 Listen aufgeführt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.