Mehrere Objekte gleichzeitig sichtbar/unsichtbar machsn

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Wilson.

    Mehrere Objekte gleichzeitig sichtbar/unsichtbar machsn

    Hi,

    hab mehrere Objekte, Labels, TextBoxen, Buttons, auf verschiedenen Panels platziert und diese dann übereinander gelegt, nun hab ich das Problem, dass andauernd eins der Panels weg bleibt, wenn es auf visible=true geschaltet wird, ich flipp schon echt aus, weil ich nicht verstehe warum.

    Weiss jemand warum das passiert?
    Oder gibt es eine andere Möglichkeit als Panels, um nicht jedes einzelne Objekt auf visible=true/false zu setzen?
    Hab das vorher so gemacht und als Hintergrund eine Imagebox, die dann das passende Bild angezeigt hat, das ist aber extrem chaotisch und macht den Code unnötig lang. Es hat so funktioniert, d.h. der Fehler liegt bei den Panels.

    Hintergrund: Experimentiere grad mit der Facebook-API und will den WebBrowser sinnvoll überdecken, lese dazu die Webseite aus und wenn es den Begriff findet, setzt es den WebBrowser auf visible=false und ein Panel, mit einem Hingegrundbild, auf true. Das gleiche bei falschem Login, Fehlermeldungen usw.

    MfG

    Wilson
    Also mit Panel's sollte das eigentlich wunderbar funktionieren. (GroupBoxen, etc funktionieren auch)
    Aber wenn du andauernd soviele Controls visible und invisible schalten musst hast du vllt auch eine eher unzweckmäßige GUI zusammengebaut - vllt lässt sich da noch was Optimieren, poste doch mal einen Screenshot wenn du willst.

    Ansonsten kannst du per Code auch mehrere Controls ansprechen:

    VB.NET-Quellcode

    1. Dim controls() As Control = {Label1, Label3, Label4, ListBox1}
    2. For Each c In controls
    3. c.Visible = False
    4. Next


    Wenn du nicht immer die For-Schleife hinschreiben möchtest, dann könntest du das auch in ein Sub auslagern der ein Control-Array sowie einen visible-Status als Parameter erfordert. Dann wären das Einzeiler. Aber wie gesagt, das sollte das letzte Mittel sein^^
    habs für heute aufgegeben, gehe da mal morgen mit klarem Kopf nochmal dran. War mit den Panels nicht so ganz sicher, aber wenn du sagst, dass es damit funktionieren sollte...

    Es ist nur ein Panel das diese Macke hat, WebBrowser wird Augeblendet aber das Panel nicht eingenlendet. Lade moin mal nen Screenshot hoch, wobei man da net soviel sehen wird, weil die Panels und der Browser ja über einander liegen.

    Danke :)

    Wilson schrieb:

    wobei man da net soviel sehen wird, weil die Panels und der Browser ja über einander liegen.

    sowas ist einfach schwierig im Designer richtig zu handlen. Ganz leicht rutscht dabei ein Panel in ein anneres hinein, und ist dann natürlich weg, wenn letzteres gehidet wird.

    Guck dirmal TabControlOhneReiter an, ob du das verwenden kannst.
    Weil ein TabControl ist ja grade ein Dingens mit viele Panels übereinander.
    Hab ich Dich richtig verstanden?
    Du hast mehrere Panels übereinander, von denen eins angezeigt werden soll, die anderen aber nicht? ==> Such mal nach TabControl ohne Tabs.
    Du kannst auch Controls so einrichten, dass sie bei allen Tabs angezeigt werden (dazu müssen sie immer der Controls-Collection des aktiven Tabs zugeordnet werden).
    Oder
    Du hast Gruppen von Controls nebeneinander, die gruppenweise sichtbar / unsichtbar sein sollen. Das geht so:

    VB.NET-Quellcode

    1. Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
    2. Panel1.Visible = CheckBox1.Checked
    3. End Sub
    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 euch vielmals, hab grad leider keine Zeit eure Tips auszuprobieren, werd aber, wenn ich es hab bzw. eine Lösung hab, ein Feedback geben.

    Ja, die Panels liegen übereinander und über nem Browser, den braucht man für den Login der FB-Api und danach nicht mehr, dann hat man eine leere Seite auf der "Success" steht. Dieses "Success" lese ich aus und überblende die leere Seite mit einem Panel, das Gleiche auch bei falsch eingegebenem Passwort. Wenn man dann in der Listbox, die neben dem Browser/den Panels ist und mit den FB-Kontakten gefüllt wird, einen der Kontakte anklickt, kommt ein weiteres Panel, auf dem ein kompaktes Profil des ausgewählten Kontaktes angezeigt wird. Dann hab ich noch ein Panel für die Info und Fehlermeldungen. Es ist immer nur ein Panel oder der Browser sichtbar.
    Da passt aber:

    RodFromGermany schrieb:

    Such mal nach TabControl ohne Tabs.
    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!
    Jo, sauber, das passt :thumbsup:
    Hab den Code von [VB.NET] TabControl ohne Reiter verkürzt:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. For Each tc In {TabControl1}
    3. With tc
    4. .SuspendLayout()
    5. 'diese 3 Einstellungen verstecken die Reiter erst zur Laufzeit
    6. 'bei Design-Arbeiten am Form sind die Reiter ja sehr nützlich
    7. .SizeMode = TabSizeMode.Fixed
    8. .ItemSize = New Size(0, 1)
    9. .Appearance = TabAppearance.Buttons
    10. .ResumeLayout()
    11. End With
    12. Next
    13. End Sub


    und bei Event:

    VB.NET-Quellcode

    1. Private Sub InfoBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InfoBtn.Click
    2. TabControl1.SelectedTab = TabInfo 'der gewünschte Tab
    3. End Sub


    Einfach genial, viel einfacher, sauberer und kürzer als Panels. Was ein Glück, dass es VB-Paradise.de und seine User gibt ^^

    Aber ein kleines Problem hab ich noch, ist zwar nicht so gravierend, aber für mich als Perfektionist schon wichtig: Der graue Rand des TabControls, wie krieg ich den weg? (Bild Im Anhang)
    Bilder
    • scrsht_vb.net2.png

      107,35 kB, 1.280×1.024, 264 mal angesehen