btn.visible = false funktioniert nicht

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    btn.visible = false funktioniert nicht

    Hi,

    ich habe eine Form mit mehreren Buttons, Labels und Textboxen.

    Bei Klick auf Button1 erscheinen alle Elemente und bei Klick auf Button2 sollen diese wieder verschwinden. Interessanterweise bleiben 2 Elemente bei Klick auf Button2 sichtbar.

    Hat so einen Effekt schon mal jemand gehabt?

    ich habe nun einige Zeit gegoogelt, aber nichts gefunden. btn.refresh() und application.doevents haben keinen Effekt.

    *Topic verschoben* ~NoFear23m

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

    Hi, ja, ungewöhnlich - das finde ich eben auch :D bin schon nervlich am Ende :D :D

    Code für die beiden Buttons:

    Visual Basic-Quellcode

    1. Private Sub btnSearchCustomer_Click(sender As Object, e As EventArgs) Handles btnSearchCustomer.Click
    2. lblSearchKunde.Visible = True
    3. btnSearchCustomer.Visible = False
    4. btnLadenKunde.Visible = True
    5. btnNewCustomer.Visible = False
    6. btnCancelCustomer.Visible = True
    7. lblFirmennameKunde.Visible = True
    8. txtFirmennameKunde.Visible = True
    9. lblKundennummer.Visible = True
    10. txtKundenummer.Visible = True
    11. txtKundenummer.Enabled = True
    12. txtFirmennameKunde.Enabled = True
    13. End Sub
    14. Private Sub btnCancelSearchCustomer_Click(sender As Object, e As EventArgs) Handles btnCancelSearchCustomer.Click
    15. btnSearchCustomer.Visible = True
    16. btnNewCustomer.Visible = True
    17. btnCancelCustomer.Visible = False
    18. lblFirmennameKunde.Visible = False
    19. txtFirmennameKunde.Visible = False
    20. lblKundennummer.Visible = False
    21. txtKundenummer.Visible = False
    22. txtKundenummer.Enabled = False
    23. lblSearchKunde.Visible = False
    24. btnLadenKunde.Visible = False
    25. End Sub


    Alles reagiert wie es soll, außer btnLadenKunde und lblSearchKunde (siehe Screenshots). lblSearchKunde hat atm auch den Text "Kundennummer",da ich es auch schon gelöscht und neu erstellt habe, aber den Text noch nicht geändert.
    Bilder
    • bevorKlick.png

      4,16 kB, 561×182, 72 mal angesehen
    • kundeSuchen.png

      6,02 kB, 572×215, 69 mal angesehen
    • nachCancel.png

      5,04 kB, 543×187, 75 mal angesehen
    @Morrison Wieso ungewöhnlich?
    @gluehbirne Wenn VB.NET eine Sprache ist, dann hast Du Dich einfach "versprochen".
    Mach genau eine Funktion und gib der ein Boolean Flag, ob die Majorität der Controls Sichtbar oder nicht sichtbar sein soll.
    Dann wirst Du den Fehler in wenigen Sekunden gefunden haben. :thumbup:
    =====
    Liebe Forumskollegen, lasst bitte gluehbirne den Fehler allein finden, weil dieser so elementar ist :!:
    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!

    RodFromGermany schrieb:


    Mach genau eine Funktion und gib der ein Boolean Flag, ob die Majorität der Controls Sichtbar oder nicht sichtbar sein soll.


    So funktioniert es - weiß aber nicht, ob es das war was du meintest (wenn nicht, brauche ich einen weiteren Denkanstoß):

    VB.NET-Quellcode

    1. Private Sub btnSearchCustomer_Click(sender As Object, e As EventArgs) Handles btnSearchCustomer.Click
    2. SwitchButtonsSearchCustomer(True)
    3. End Sub
    4. Private Sub btnCancelSearchCustomer_Click(sender As Object, e As EventArgs) Handles btnCancelSearchCustomer.Click
    5. SwitchButtonsSearchCustomer(False)
    6. End Sub
    7. Private Sub SwitchButtonsSearchCustomer(SearchCustomer As Boolean)
    8. If SearchCustomer = True Then
    9. btnNewCustomer.Visible = False
    10. btnSearchCustomer.Visible = False
    11. btnLadenKunde.Visible = True
    12. btnCancelSearchCustomer.Visible = True
    13. lblSearchKunde.Visible = True
    14. lblFirmennameKunde.Visible = True
    15. txtFirmennameKunde.Visible = True
    16. txtFirmennameKunde.Enabled = True
    17. lblKundennummer.Visible = True
    18. txtKundenummer.Visible = True
    19. txtKundenummer.Enabled = True
    20. Else
    21. btnNewCustomer.Visible = True
    22. btnSearchCustomer.Visible = True
    23. btnLadenKunde.Visible = False
    24. btnCancelSearchCustomer.Visible = False
    25. lblSearchKunde.Visible = False
    26. lblFirmennameKunde.Visible = False
    27. txtFirmennameKunde.Visible = False
    28. txtFirmennameKunde.Enabled = False
    29. lblKundennummer.Visible = False
    30. txtKundenummer.Visible = False
    31. txtKundenummer.Enabled = True
    32. End If
    33. End Sub


    Jetzt aber zu der alles entscheidenden Frage: WARUM? ^^ Der erste Wurf war zwar nicht elegant, ich komme aber nicht darauf...

    Ich werde jetzt noch ein bisschen aufräumen, also alles was True bzw. false ist analog dem übergebenen Wert entsprechend aus dem if rausnehmen....trotzdem kann ich es mir einfach nicht erklären ^^

    *Vollzitat entfernt* ~NoFear23m

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

    Wenn man von leichten inhaltlichen Abweichungen zwischen Post#3- und Post#5-Code absieht: Ich bin auch zu doof den Fehler zu finden. Eigentlich bin ich Rätsellöserfan und mag es nicht, wenn man mir die Auflösung gibt, aber hier bin ich raus. Ich habe das Szenario aus Post#3 nachgebaut und - wenn man von von einer Kleinigkeit absieht, die hier aber nicht als Fehler erwähnt wurde - funktioniert der Code wie gewünscht. Ich kann problemlos zwischen den Fenstern mittels [Kunde suchen] und [Abbruch] hin- und herswitchen, ohne dass was hängenbleibt. btnLadenKunde und lblSearchKunde verhalten sich bei mir mit dem Post#3-Code wie gewünscht. Vielleicht kann mir jemand per Konversation auf die Sprünge helfen. Vielleicht ist es einfach auch schon für mich zu spät heute.
    Bilder
    • Rebuild.png

      7,9 kB, 828×222, 70 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    gluehbirne schrieb:

    weiß aber nicht, ob es das war was du meintest
    Nö, so nicht ganz.
    Statt

    VB.NET-Quellcode

    1. btnNewCustomer.Visible = False
    2. ' und
    3. btnNewCustomer.Visible = True
    meine ich

    VB.NET-Quellcode

    1. btnNewCustomer.Visible = DasÜbergebeneFlag
    2. ' bzw.
    3. btnLadenKunde.Visible = Not DasÜbergebeneFlag
    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!

    gluehbirne schrieb:

    warum Post 3 nicht geht.
    Ich hab mir eine leere Form gemacht und Deine Controls darauf gezogen und zwei Button, um das zu schalten. Nimm statt der Label auch Button, das ist in diesem Fall zum Testen egal.
    Schalte und erkenne. ;)
    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!