Benutzer mit den meisten Antworten
Reihenfolge von Controls in einem Panel

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
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 - 1Gruß Elmar
- Als Antwort markiert Robert Breitenhofer Montag, 6. Februar 2012 17:01
Alle 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 - 1Gruß Elmar
- Als Antwort markiert Robert Breitenhofer Montag, 6. Februar 2012 17:01
-
Hallo Yawahoo,
Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.