Unterschied Panel und SplitterPanel

  • VB.NET
  • .NET 5–6

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

    Unterschied Panel und SplitterPanel

    Hallo,

    VB.NET-Quellcode

    1. Private Sub SC_1_Click(sender As Object, e As EventArgs) Handles SCLinks1.Panel1.Click, SCRechts1.Panel1.Click
    2. Switch(DirectCast(sender, SplitterPanel), Color.Red)
    3. 'Alternativ DirectCast(sender, Panel)
    4. End Sub


    SCLinks1 und SCRechts1 sind SplitContainer. Diese beinhalten SplitterPanel, welche angeklickt werden sollen.

    Um die Events zusammenzufassen, arbeite ich mit dem übergebenen sender, die Frage ist wohin sollte ich Casten? Auf SplitterPanel oder auf Panel, funktionieren tut beides.
    Klar wenn ich eine Funktion benötige, die nur SplitterPanel bereithält, muss ich dahin casten.

    Dies ist hier jedoch nicht der Fall, gibt es hier also eine Regelung und einen Unterschied zwischen den Casts?

    Ich habe eine solche Anordnung, vielleicht waren SplitContainer auch gar nicht die richtige Entscheidung und ich hätte 6 separate Panels nehmen sollen? Ich fand die SplitContainer einfacher einzustellen.


    Viele Grüße

    Haudruferzappeltnoch schrieb:

    die Frage ist wohin sollte ich Casten?
    auf die primitivste gemeinsame Basisklasse der beiden, die noch das unterstützt, was du brauchst.
    Und schau dir die Vererbung im Objectbrowser an.
    Panel-und-SplitterPanel haben eine verhältnismässig lange "Ahnenreihe" geerbt - also da wird das Konzept wirklich interessant.

    achso - es sind ja beides SplitterPanel - ist ja fast langweilig ;)

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

    Ich versteh grad nicht, wieso hier ein Panel bei der Cast-Geschichte ins Spiel gebracht wird. Ein Splitcontainer besteht aus 2 SplitterPnales und keinem Splitter, den man ggf. bewegen kann. Warum sollte man da jetzt was casten? Oder hast Du n Panel auf einem der Splitterpanel?
    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.
    Vollzitat eines Vorposts an dieser Stelle entfernt ~VaporiZed

    Das war gemünzt für, wenn du verschiedene Controls mit derselben Methode behandeln wollen würdest.
    Aber da die Methode doch nur für SplitterPanel vorgesehen ist, castet man wohl gemeinhin auf Splitterpanel.


    Haudruferzappeltnoch schrieb:


    Und was meinst du mit beides? Panel ist Panel und Splitterpanel ist Splitterpanel oder?
    Ja und nein.
    Splitterpanel ist auch Panel - wie gesagt: schau dir die Vererbungs-Hierarchie im OB an.

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

    VaporiZed schrieb:

    Warum sollte man da jetzt was casten?
    Casten muss ich, weil der Sender ein Object ist, dachte ich.

    Ich wechsle in der Methode die BackColor.
    Wie gesagt, ich nutze keine Besonderheit eines Splitterpanels, normale Panels könnte dasselbe erreichen. ich habe es nur der Einfachheit halber gewählt.

    In der Hierarchie ist die BackColor-Eigenschaft ab Control dabei. Demnach sollte ich auf Control casten?

    VB.NET-Quellcode

    1. Private Sub SC_1_Click(sender As Object, e As EventArgs) Handles SCLinks1.Panel1.Click, SCRechts1.Panel1.Click
    2. Switch(DirectCast(sender, Control), Color.Red)
    3. End Sub
    4. Private Sub Switch(splitpn as Control, clr as Color)
    5. splitpn.BackColor = clr
    6. End Sub

    Achso. Ich dachte schon, dass Du SplitterPanels in Panels casten wolltest.
    Du kannst auf Control casten, musst Du aber nicht. Wenn Du aufgrund der Handles-Klauseln weißt, dass nur SplitterPanels ankommen können, caste auf SplitterPanel.

    Machst Du das mit der BackColor, damit der User weiß, in welchem Panel er sich gerade befindet? Falls ja: hab ich auch in einem älteren Programm. Über ne bessere Lösung hab ich mir noch keine Gedanken gemacht :)
    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.
    Nee die Farbe zeigt später einen Status an. Wie eine Ampel. Aber ich musste erstmal mit klicks testen, weil am Ende soll es nicht nur rot sein, sondern man muss ja auch wissen können warum^^
    Da kann ich dann zwei Fliegen mit einer Klappe schlagen wenn ich das Klicken und Farbe wechseln in einem prüfe.