For Each Schleife - Controls wie angeben?

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

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

    For Each Schleife - Controls wie angeben?

    Guten Tag,

    ich habe versucht einer For Each Schleife einige Controls mitzugeben..

    VB.NET-Quellcode

    1. For Each dgv As DataGridView In {TableLayoutPanel1.Controls.OfType(Of DataGridView)(), TableLayoutPanel2.Controls.OfType(Of DataGridView)()}
    2. Next


    Dies möchte nicht funktionieren, wie würde es richtig aussehen?
    Sollte ich die Listen ggf. vorher mergen und dann "normal" verfahren, a la - for each dgv as datagridview in [Auflistung]?
    Polling is trolling!

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

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

    Vielleicht verstehe ich das Problem nicht 100 % aber evtl. suchst du etwas,was dir nur alle Datagridview's in der Auflistung zurückgibt?
    Falls ja, wäre dies ein Vorschlag.

    VB.NET-Quellcode

    1. For Each c As Control In TableLayoutPanel1.Controls ' Alle Controls durchgehen
    2. If TypeOf c Is DataGridView Then ' ist es ein Datagridview?
    3. With CType(c, DataGridView)
    4. ' mach was mit
    5. .BackgroundColor = Color.Red
    6. End With
    7. End If
    8. Next
    @Rootbob91 Erkläre doch mal mit eigenen Worten, was Du Dir bei dieser Konstruktion gedacht hast.

    @RoulettePilot Dafür gibt es Die .OfType()-Extension, um den Typ zu filtern.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Was ich mir in dieser Konstellation gedacht habe war, dass ich innerhalb der geschweiften Klammern alle Controls zusammenfasse die durchlaufen werden sollen.

    2 Auflistungen und ggf. noch eins getrennt.
    Polling is trolling!

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

    Rootbob91 schrieb:

    wie würde es richtig aussehen?
    So:

    VB.NET-Quellcode

    1. Dim dgvs() As DataGridView = {Me.DataGridView1, Me.DataGridView2, Me.DataGridView3}
    2. For Each dgv In dgvs
    3. ' was tun
    4. Next
    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!
    Danke sehr, habs jetzt vorher alles in eine List(Of DataGridView) gemerged/zusammengepackt und laufe diese dann durch.

    Das es so wie oben aussieht wusste ich, also mit einzelnen, ich dachte, dass ich dort dann auch Auflistungen und einzelne angeben kann und dies dann auch geht :)!
    Polling is trolling!

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