none
Reihenfolge von Controls in einem Panel RRS feed

  • Frage

  • Hallo.

    Ich habe in meinem Programm ein Panel in dem ich wiederum 8 Groupboxen habe. Diese sind in zwei Reihen angeordnet. Also

    gbx1    gbx2    gbx3    gbx4

    gbx5    gbx6    gbx7    gbx8

    Wenn man auf einen Button drückt soll davon Summe x per Enabled "an/ausgeschaltet" werden. Ich habe das soweit über folgenden Code geschrieben:

     

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim _counter
            _counter = 0
            For Each _gbx As GroupBox In pnl_Ladebuchten.Controls
                _gbx.Enabled = False
                _counter = _counter + 1
                If _counter = einheitGewaehlt.anzahlLadebucht Then Exit For
            Next
        End Sub
    
    


    Das funktioniert auch soweit aber... Es wird gbx1, gbx4 und gbx8 auf false geschaltet. Per TabIndex habe ich die 8 Groupboxen von 1 bis 8 durchnummeriert. Was leider nicht geholfen hat. Wie sind/werden die Controls in so einem Panel sortiert?

    Danke für Hilfe
    Jan

     

    Sonntag, 29. Januar 2012 18:29

Antworten

  • Hallo Jan,

    die Reihenfolge hat nichts mit dem TabIndex zu tun.
    Die sog. ZOrder lässt sich bei Windows Forms durch BringToFront nach vorne (Index = 0)
    bzw. SendToBack (letztes) "verlegen" (entsprechende Schaltflächen gibt es auch im Designer);
    oder aber über die SetChildIndex-Methode der ControlCollection.
    Die ZOrder spielt aber vornehmlich eine Rolle, wenn sich Steuerlelemente überlappen (können).

    Steuerelemente nach dem TabIndex wählt man i. a. über SelectNextControl aus.

    Für Deinen Fall wäre das aber relativ mühselig.
    Einfacher ist eine eigene Auflistung zu verwenden, siehe z. B. Event/Handle zu List(of T)
    (dort waren es CheckBoxen, gilt aber für alle Steuerelemente und mehr)

    Die Auflistung kannst Du direkt durchlaufen mit etwas wie
    For index = 0 To  einheitGewaehlt.anzahlLadebucht - 1

    Gruß Elmar

    Sonntag, 29. Januar 2012 18:50

Alle Antworten