Elemente aus unsichtbaren Panel ausgliedern

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Nils_Kr.

    Elemente aus unsichtbaren Panel ausgliedern

    Hi,

    ich habe ein Panel, welches diverse Elemente wie TextBoxen, Buttons etc enthält. Bei Programmstart ist dieses und alle enthaltenen Elemente unsichtbar.
    Jetzt möchte ich aber, dass eine bestimmte TextBox und ein Button von Anfang an sichtbar sind. D.h. das die beiden Controls sich zwar von der Position innerhalb
    des Panels befinden, die Sichtbarkeit aber von diesem unabhängig ist.

    Im Designer des Sheets hab ich keinen Eintrag gefunden, dass die Controls dem Panel explizit zuordnet.

    E: Wenn man einen Button außerhalb des Panels erstellt und die Position dann über die Properties ändert wird er nicht automatisch eingegliedert und bleibt sichtbar.
    Wenn man ihn dann mit dem Cursor auch nur ein Pixel bewegt erbt er die Eigenschaften des Panels.
    Option strict = on

    If it's stupid and it works it ain't stupid.

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

    ErfinderDesRades schrieb:


    Auf einem unsichtbaren Panel die Controls sind ebenfalls unsichtbar


    Das witzige ist ja, dass das nur zutrifft, falls die Controls per Drag&Drop in das Panel gezogen oder in diesem erstellt wurden. Irgendwo muss es also eine Zuordnung geben,
    weil rein von der Position her ist es nicht abhängig.

    Aber wenn du dazu nichts weist, dann ist eine Option dazu, sollt es sie geben, verdammt tief im Editor vergraben. :| Nja immerhin hab ich ein funktionierendes Workaround.
    Option strict = on

    If it's stupid and it works it ain't stupid.
    Natürlich gibt es eine Zuordnung, und zwar mit Panel.Controls.Add(), ist in der Designer-Datei.

    Würdest du allerdings die Zuordnung löschen, könntest du nicht gleichzeitig das Panel (wenn es mal sichtbar ist) und das Control sehen.

    Ich würde sagen, du scheibst deine eigene SetUnvisible()-Methode, wo du nicht das Panel, sondern nur die einzelnen Controls darauf (eben nicht alle) auf .Visible=False setzt. Das Gleiche mit SetVisible.

    WhitePage schrieb:

    Natürlich gibt es eine Zuordnung, und zwar mit Panel.Controls.Add(), ist in der Designer-Datei.


    Davon hängt aber zumindest bei mir nicht ab, ob ein Control sichtbar ist oder nicht. Ich hab bei mir 2 Button, der eine ist im Designer zugeordnet, der andere nicht, trotzdem werden beide mit dem Panel ein und ausgeblendet. Alle Controls einzeln ein- und auszublenden ist natürlich auch ne Möglichkeit, alles über ein einzelnens Panel zu organiesieren wäre halt die elegantere Option gewesen.
    Option strict = on

    If it's stupid and it works it ain't stupid.

    Nils_Kr schrieb:

    alle enthaltenen Elemente unsichtbar.
    Wenn Du das Panel als solches .Visible = False machst, ist das Panel und alle seine Member unsichtbar.
    Wenn Du eines oder mehrere Member davon sichtbar machen willst, musst Du das Panel und diese Member .Visible = True und alle anderen Member auf .Visible = False setzen.
    Oder Du fügst den Button der Controls-Collection des Fensters des Panels hinzu:

    VB.NET-Quellcode

    1. Me.Panel1.Controls.Add(Me.Button4)
    2. ' bzw
    3. Me.Controls.Add(Me.Button4)
    allerdings hat der Button dann eine andere Position, es sei denn, des Panels .Location = New Point(0, 0).
    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: Das Problem ist nicht, dass ich nicht weiß wie man Elemente sichtbar & unsichtbar bekommt, sondern,
    dass der Designer eigenmächtig die Gruppierungen ändert wenn man die Controls bewegt. Aber da ich mir dessen jetzt bewusst bin
    kann ich das ja korrigieren. Aber etwas fiddelig ist es schon.
    Option strict = on

    If it's stupid and it works it ain't stupid.

    Nils_Kr schrieb:

    die Gruppierungen ändert wenn man die Controls bewegt
    Wenn die Controls in ein Panel hinein oder aus einem Panel heraus bewegt werden.
    Sonst nicht.
    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!
    Es gibt so eine Art Dokumentenansicht in VS. Ich bin grad unterwegs, du müsstest es also selbst finden. Wenn du es aber gefunden hast, kannst du über die TreeView-Ansicht die Controls per Drag&Drop aus dem Panel rausziehen und der Form unterordnen. Dann werden sie nicht mehr mit dem Panel ausgeblendet.