TreeView umschalten für Formen

  • VB.NET

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

    TreeView umschalten für Formen

    Hallo zusammen,

    Ich habe ein sehr einfaches Programm mit ca. 40 Button ,wo ich auf der jewiligen Startseite eine neue Form (über 50) öffne.
    Leider wurd das ganze jetzt sehr unübersichtlich und der Platz zu wenig.

    Will das gerne umändern auf ein TreeView.

    Die Formen haben alle das selbe Design ,es liegt lediglich eine andere Ausführungsfunktion hinter der Form.
    Um nicht alle Steuerbefehle vom TreeView auf jede seite zu kopieren wolte ich fragen gibt es dazu eine einfachere Metode?

    Wie gesagt links auf der Form habe ich die auswahl über ein TreeView , rechts die Anwendung.
    TreeView soll beim makieren die zuständige Form laden ,jedoch soll die TreeView auswahl bleiben.
    Hätte da einer eine Idee wie das sinnvoll losen könnte ?

    Lg.

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Meinst du sowas hier?

    stackoverflow.com/questions/12355955/advanced-options-dialog

    http://www.c-sharpcorner.com/uploadfile/Dorababu742/using-treeview-panel-control-in-windows-form/

    Also wenn was anderes angeklickt wird im TreeView kannst du ja ein Panel/UserControl laden
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    Ja vermute das kann meinen Zweck erfüllen.
    Habe noch nie was mit einem Panel gemacht !
    Mit einem Panel kann ich eine gewisse seite auf der nächsten einblenden/Kopieren oder mitnehmen liege ich da richtig ?
    Habe ich das richtig verstanden dann mache ich das TreeView auf einer seite rein und setze dann ein Panel drüber oder ?

    Lg.
    guggemol diesehier: TabControl ohne Reiter

    Also generell ists keine gute Idee "Formen zu verbinden". Was du beschreibst ist eine Frameset-Navigation, und das Navi-Control ist ein Treeview. Genau wie im Tut beschrieben.
    Also vergiss vor allem die 50 Forms - wenn, dann nimm UserControls.
    Evtl., wenn sich die Ucls (wie gesagt: von Forms lass ab) wirklich stark ähneln, kann mans sogar auch ohne Ucls deichseln, allein mit Databinding.
    Dazu muss man aber mehr über das Proggi wissen.

    Auch muss man überlegen, ob ein TabControl wirklich gut ist, weil bei 50 aufwändige ucls drauf wird das auch ganz schön träge.
    Da könnte man optimieren, indem man jeweils nur ein Ucl lädt, und das vorherige dann wieder entlädt.
    Etwas ähnliches wie das was du beschreibst haben wir hier auch im Einsatz.
    Links ist ein TreeView und rechts werden unterschiedliche Forms geladen und entladen.
    Du kannst natürlich zwei Forms ohne Rahmen in einem MDI Window nebeneinander positionieren. Dann sieht es aus, wie eine einzige Form.
    Ob es die sinnvollste Variante ist, lasse ich mal dahin gestellt.
    Schau dir mal ein MDI Control an. Ist in VS 2010 unter "Übergeordnetes MDI-Formular" zu finden.
    Dann gibst dem TreeView als Location 0;0 und den anderen Formen halt als Location "Breite des TreeView";0.
    Aber drauf achten, dass diese Forms dann halt ohne Border erscheinen. Sonst siehts komisch aus ^^
    In meinem Fall sieht es so aus:

    Drei Forms werden dargestellt. Links eine mit dem TreeView, rechts der Inhalt der auswechselt und unten eine mit den allgemeinen Steuerinformationen.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    nochmal: Für sowas sind UserControls vorgesehen - Forms sind dafür nicht gedacht. Man kann sie zwar dazu "missbrauchen", indem man einige ihrer Features versteckt, aber konzeptionell genau für diesen Fall vorgesehen sind UserControls.
    Einfach mal "Menu-Projekt-Hinzufügen-UcerControl" probieren.
    Die erscheinen nach Komplilieren sogar in der Toolbox, und kann man aufs Form ziehen.
    Das ist alles schön und gut.
    Mag auch richtig sein. Aber ist in der Praxis nicht machbar. Alles neu bauen, dafür bekomme ich und sicher kaum ein anderer die Ressourcen freigegeben.
    Wenn die Formen in sich stimmig sind und funktionieren kann man mit der Art und Weise recht schnell Übersicht schaffen.
    Wenn ich es richtig verstanden habe wird es sich um ein gewachsenes Programm handeln und sowas umbauen kann man in nem privaten Projekt vielleicht, aber wenn ich zu meinem Vorgesetzten gehe und will dafür Zeit freigeschaufelt bekommen, flieg ich achtkantig aus dem Büro.

    Ab und zu muss man auch realistisch bleiben.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Hast du mal ein UserControl probiert?
    Du wirst feststellen, es ist exakt wie ein Form zu designen, hat Codebehind, Designer.vb - kein Unterschied zu dem, was du jetzt hast. Probiers wenigstens mal aus, dauert 2min, dass du's mal gesehen hast.

    Tatsächlich kann man Forms sogar umstricken zu UserControls, indem man im DesignerCode die Inherit-Anweisung auf Inherits UserControl ändert.
    Dann treten paar Fehler auf mit Einstellungen, die's im ucl halt nicht gibt (FormBorderStyle, StartupPosition, IsMdiChild,...), die kann man alle löschen, und dann ist das Form ein ucl.
    Dauert mit Übung vlt. 3min/Form-Ucl.
    Das musste halt selbst überlegen, ob du dir das als Umbau noch antun kannst.

    Aber zumindest für Zukunft sollteste das berücksichtigen, denkich.
    Na es geht nicht darum dass es anders ist. Es geht darum dass etwas vorhanden ist was nicht erst neu designet werden muss.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Ich rede davon jede Form anzupacken was schlicht nicht nötig ist, wenn alles da ist was benötigt wird und in sich funktional ist.
    Es macht mMn keinen Sinn Zeit in etwas zu stecken was keinen Mehrwert bietet und unnötig ist.
    Es sind immer zwei verschiedene Dinge ob man etwas existierendes "ändert" oder bei etwas Neuem die ggf. passenden Möglichkeiten nutzt.
    Die Form an entsprechende Stelle setzen wäre nur einmalig im Aufruf der Formen zu definieren und dann war es das.
    Einen Nachteil hat es nicht.

    EDIT:
    Zitat aus EMail:
    ​Hallo MemoAnMichSelbst.Danke für deine Antwort,http://www.vb-paradise.de/index.php/Thread/114049-TreeView-umschalten-f%C3%BCr-Formen/?postID=992526#post992526Eben wie du schon beschrieben hast währ es zeitlich gesehen unmöglich die 50 Formrn neu zu machen :-)Hast du eine Idee wie ich das nich lösen kann?WIe gesagt gehts mir nur um das aufrufen der einzelnen Formen ,ist TreeView hier eine Lösung?

    Also es ist nicht nötig das per Mail zu senden. Sowas kann ruhig hier im Forum besprochen werden.
    Nen TreeView zum Aufruf ist in sofern mMn ok, in soweit die Programme in Hirarchien verpackt werden sollen.
    Unser ERP System nutzt zum Aufruf ebenfalls nen Treeview. Also so weit hergeholt ist das nicht ^^
    Ob ne Liste, ne kleine Combobox oder nen TreeView nötig sind, kannst nu du bestimmen. Es kommt ganz drauf an, was du da so an Programmen hast.
    Von nem TabControl würde ich bei der genannten Anzahl von Programmen aber mal abraten.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    ah - du meintest mit "designen" Architektur designen.
    Und ich verstand darunter die Forms/UserControls im FormDesigner zu designen (was ja garnet nötig wäre).

    Meine 2. Frage, die du nicht beantwortetest, betrachte ich nu mal mit "nein, habe noch kein Experiment mit UserControl gemacht" beantwortet.
    Ich habe ein UserControl durchaus mal gebastelt. Halte ich hier aber für nicht nötig.
    Fraglich ist überhaupt ob es sogar von Vorteil ist mehrere Forms gleichzeitig darzustellen.
    Also in nem MDI Container ein Menü zu erstellen und dort die einzelnen "Forms" zu ordnen. Dann könnte man das MDI Control gar so nutzen wie es ursprünglich konzipiert war.
    Aber dafür müsste ich auch mehr vom Programm selber wissen.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    brembo00 schrieb:

    Geht das ,das man 2 Formen mit einander verbindet ?
    Zieh Dir ein TableLayoutPanel oder einen SplitContainer auf die Form und spiel damit ein wenig.
    In das TableLayoutPanel bekommst Du pro Feld genau ein Control rein. Wenn es mehrere sein müssen, füg zuerst ein Panel ein, in das Du mehrere Controls bekommst.
    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!