Dynamisch erstellte Controls verwalten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Rootbob91.

    Dynamisch erstellte Controls verwalten

    Hallo, ich habe noch eine weitere wahrscheinlich einfache Frage..

    Und zwar erzeuge ich in einer Schleife Controls (DataGridViews) die letztendlich einem jeweiligen TableLayoutPanel hinzugefügt werden.

    Z.B. so:

    VB.NET-Quellcode

    1. For i As Integer = 0 To 10
    2. Dim dgv As New DataGridView
    3. 'Konfiguration hier..
    4. '...
    5. '..
    6. If i < 5 Then
    7. TableLayoutPanel1.Controls.Add(dgv)
    8. TableLayoutPanel2.Controls.Add(dgv)
    9. Else
    10. TableLayoutPanel3.Controls.Add(dgv)
    11. End If
    12. Next


    Wie verhält sich das ganze dann? Ich habe doch nur ein DGV erzeugt, allerdings befinden sich dann nachher (nicht ausprobiert, aber glaube ich mal durch Zufall gesehen) mehrere DGVs dort.
    Fügt Visual Studio automatisch mehrere Instanzen hinzu oder sind das dann mehrere Objekte die letztendlich aber auf eine Instanz verweisen?

    Mir geht es im Endeffekt darum das je nachdem welche Zahl i hat, die Konfiguration unterschiedlich ausfällt aber trotzdem bei gegebener Zahl auf mehreren TLPs hinzugefügt wird.
    Sollte ich dann lieber eine Kopie oder eine weitere Instanz anfertigen oder?..

    PS: Im Nachhinein fällt mir ein, dass ich mir die Frage eigentlich selber beantwortet habe, man kann ja kein gleiches Objekt bzw. eine Instanz dessen haben die unterschiedliche Konfigurationen aufweist.
    Dann suche ich wahrscheinlich die einfachste Möglichkeit ein Steuerelement zu kopieren. Soweit ich mich erinnern kann gabs da irgendwie n Copy Befehl.

    Oder ggf. ne Extension die eine neue Instanz des DGVs mit der bisherigen Konfig. zurückgibt und mir so die Möglichkeit gibt in kurzen Schritten die Konfig mit der neuen Instanz zu erweitern?
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Rootbob91“ ()

    Rootbob91 schrieb:

    VB.NET-Quellcode

    1. TableLayoutPanel1.Controls.Add(dgv)
    2. TableLayoutPanel2.Controls.Add(dgv)
    Das geht schief.
    Ein Control kann nur einem Herrn Untertan sein. Mit der 2. Zeile wird das DGV aus dem TableLayoutPanel1 rausgenommen.
    So kannst Du allerdings ein Control von PanelA nach PanelB umorganisieren.
    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!
    Okay passt schon so :)!

    Ähm, eine kleine Frage am Rande, wenn ich eine Extension zum UserControl schreibe, müsste doch eigentlich alle Controls diese haben oder?

    Da Sie ja alle vom UserControl erben, oder ist das nicht möglich.

    (Habe noch keinen Zweck dafür :P.. Aber nur ne Frage)
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Ich würde da ein MyUserControl schreiben und von dem erben lassen.
    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!