Buttons in Controls abfragen auf deaktiviert ohne einzeln abzufragen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Koala2000.

    Buttons in Controls abfragen auf deaktiviert ohne einzeln abzufragen

    Hallo zusammen

    Ich habe 7 Buttons und 42 Labels dynamisch erzeugt. Jetzt möchte abfragen, ob die 7 Buttons deaktiviert sind ohne
    jeden einzelnen anzusprechen.

    VB.NET-Quellcode

    1. 'Alle buttons deaktivieren
    2. If Controls.Item("btn" & 1).Enabled = False And Controls.Item("btn" & 2).Enabled = False And Controls.Item("btn" & 3).Enabled = False And Controls.Item("btn" & 4).Enabled = False _
    3. And Controls.Item("btn" & 5).Enabled = False And Controls.Item("btn" & 6).Enabled = False And Controls.Item("btn" & 7).Enabled = False Then
    4. Me.Controls.Item("ergebnis").Text = "Unentschieden"
    5. MsgBox("Unentschieden")

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „snowcrack“ ()

    Als aller erstes: schau dir mal an, wie man Bedingungen richtig verknüpft.

    Zum Problem: Löse es mit einer Schleife.

    VB.NET-Quellcode

    1. For Each c In Controls
    2. If TypeOf c Is Button Then c.Enabled = False
    3. Next

    Das deaktiviert dir alle Buttons auf deiner Form.

    Edit: du hast deine Fragestellung geändert :D .
    So kannst du alle abfragen:

    VB.NET-Quellcode

    1. Dim allDisabled = True
    2. For Each c In Controls
    3. If TypeOf c Is Button AndAlso c.Enabled Then
    4. allDisabled = False
    5. Exit For
    6. End if
    7. Next
    8. If allDisabled Then
    9. 'hier was tun, wenn alle deaktiviert sind
    10. End if

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

    Oh Mann, hier komm ich mir wirklich vor wie ein blutiger anfänger :S .
    Vielen Dank an euch. @Artentus-> Ohne Strict off (bei c.enable) meckert er aber ansonsten klappt es auch wunderbar :thumbsup: .

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

    snowcrack schrieb:

    Ich habe 7 Buttons und 42 Labels dynamisch erzeugt.
    Was soll da wie bedient werden?
    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!
    @Artentus -> jop jetzt meckert er nicht mehr ^^
    @RodFromGermany -> Das habe ich reingeschrieben um Lösungsvorschläge wie "alle Controls nach enable=false zu suchen", auszuschliessen.
    War halt eine naive Idee um die Beschreibung detaillierter zu machen.
    Hallo.

    Ich habe ein ähnliches Problem.

    Ich habe eine Userform mit 18 TextBoxen. Die TextBoxen haben die Namen TeBo_Laenge1 bis 9 und TeBo_Breite1 bis 9. Dem User stehen neun Optionen zur Auswahl. Je nach Wahl möchte ich nun die richtigen Werte bekommen. Bei Option4 möchte ich also die Werte aus den TextBoxen TeBo_Laenge4 und TeBo_Breite4 heben.

    VB.NET-Quellcode

    1. Private Function Test(ByVal i As Integer)
    2. Dim Laenge As String
    3. Dim Breite As String
    4. Laenge = Controls("TeBo_Laenge" & i).Text
    5. Breite = Controls("TeBo_Breite" & i).Text
    6. End Function


    Mir ist aber noch nicht so ganz klar wie ich an die Controls komme. Ist doch anders als ich es aus VBA kenne. Muss man das immer über eine Schleife machen? Ich wollte eigentlich nicht immer alle Controls durchsuchen. So wie ich mir das gedacht habe funktioniert das leider nicht...



    Gruss, Koala

    snowcrack schrieb:

    Das habe ich reingeschrieben um
    Ich hoffe, Du hast Deine Lösung gefunden, auch wenn die Problembeschreibung suboptimal war.
    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!