Verständnisfragen Windows-Forms, mehrere Forms etc.

  • VB.NET

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

    Verständnisfragen Windows-Forms, mehrere Forms etc.

    Hallo zusammen...

    Ich bin ein Neuling im Bereich VB-Programmierung und bin mir gerade die Grundlagen am Aneignen und bräuchte ein bisschen Hilfe für mein Verständnis im folgenden Problem.

    Angenommen ich habe eine Hauptform, mit Navigationsmenü links und ein Hauptfenster auf der rechten Seite. Wie kann man nun anhand der Auswahl vom Menü oder Button, Dynamisch den Content ins Hauptfenster laden.
    Als Beispiel.: Outlook... Auf der linken Seite Navigation, Treeview, Buttons mit Mails, Kalender, Kontakte... Wenn man nun auf Kalender klickt, öffnet sich auf der rechten Seite die Kalenderansicht.

    Bis jetzt lese ich ab und zu etwas über Panels, dann User Controls, dann heisst es wieder, man sollte keine Forms in ein Panel laden, mit User Controls lädt man nur Steuerelemente und so weiter...

    Von Access her kenne ich das so, das man eine Form als Hauptfenster hat und darin Unterformulare einbinden kann. Unter anderem kann man dann auch ein ungebundenes Unterformular einbinden und dann dynamisch andere Unterformulare hineinladen oder anzeigen lassen. Jede Form hat dann sozusagen seine eigene Aufgabe und über die Hauptform lädt man nach Wunsch die Unterform.

    Wenn ich mir irgendwelche Beispiele von diesem Forum ansehe, dann enthalten diese meistens nur eine Form, mit fixen Steuerelementen oder haben zwei Forms, die aber als Dialog geöffnet werden. Kann aber auch gut sein, das ich schlichtweg nach den falschen Begriffen suche ?(

    Ich hoffe ich habe mich einigermassen klar ausgedrückt und bedanke mich für eure Unterstützung.
    Schau dir mal MDI-Anwendungen an.
    Dazu einfach neues Projekt und MDI auswählen. Der darin enthaltene Code ist eigentlich fast selbsterklärend, wenn einige Grundlagen vorhanden sind. Im übrigen rate ich dieses Buch zu lesen: "Visual Basic 2008 - Das Entwicklerbuch" von Microsoft Press als kostenloser Download
    Allerdings ist der Aufbau einer für alle Formen gemeinsame Datenbasis deutlich wichtiger als deren Anzeige und Steuerung über die Formen. Schließlich müssen zuerst mal alle für dein Programm benötigten Daten gespeichert und geladen werden. Und sie müssen in einem sinnvollen Datentyp vorliegen (z.B. Datum als DateTime und nicht als String), damit man sinnvoll damit arbeiten kann. Dabei die Daten konsequent von der GUI zu trennen ist nicht immer einfach, weil die eigene Denke das häufig dann doch vermischen will.
    Die strengste Trennung bei gleichzeitig allerbuntester GUI bietet WPF mit dem MVVM-Pattern. Hier wird die Datenanwendung komplett separat in z.B. .NET erstellt und darauf mit Datenbinding die bunte Klickiwelt draufgesetzt. Ist aber, was die GUI-Entwicklung angeht nen harter Brocken.
    Wenn du aber zunächst ausschließlich mit den Daten fummlest, kannst du anschließend wahlweise das Eine oder Andere draufsetzen. Während der Entwicklungszeit würd ich stufenweise immer mit 1 bis 2 einfachen Formen arbeiten, die hinterher weggeschmissen werden, wenn die richtige Oberfläche draufgesetzt wird. Das zwingt dich dann geradezu zum Trennen der Daten von der GUI.

    Fiel Fergnügen

    Vatter

    Edit: Auch eine sehr schöne Alternative: TabControl ohne Reiter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Vielen Dank für deine Antwort.

    Ich habe mich bis jetzt viel vor allem mit Access-Datenbanken und VBA befasst. Da nehme ich an ist eine anständige Datenbasis etwa das selbe wie eine Anständige DB zu haben. Was ich natürlich machen möchte als erstes Selbstprojekt, wäre es das ganze Frontend auf VB Basis zu haben.

    Als Bücher habe ich Einstieg in Visual Basic 2012 von Galileo Computing, Datenbankprogrammierung mit Visual Basic 2010 von Microsoft Press.

    Aus den Büchern stelle ich mir das halt immer so vor, das man mit einer Form anfängt. Steuerelemente darauf platziert und diese programmiert. Diese Forms dienen dann auch als GUI für das abfüllen der Daten...

    Tut mir leid falls ich es nun falsch interpretiert habe, aber bin daher noch ein bisschen Access verstrahlt. Da erstellt man auch zuerst die Tabellen, nimmt die korrekten Datentypen, schaut das die Relationen stimmen, DB Normalisierung usw. erst dann werden mit Formularen das GUI kreiert.

    Oder als anderes Beispiel sind Websites, da hat man auch mehrere Forms oder Sites die dann jede seine Aufgabe haben.

    TaNgu schrieb:

    Da erstellt man auch zuerst die Tabellen, nimmt die korrekten Datentypen, schaut das die Relationen stimmen, DB Normalisierung usw. erst dann werden mit Formularen das GUI kreiert.

    :thumbsup: :thumbsup: Super!! :thumbsup: :thumbsup:

    Mit dieser Einstellung hast du enorm Glück!

    99% der Progger fangen immer gleich an, sich ein hübsches Form zu basteln, und wundern sich dann iwann, wenn man ihnen nahelegen muß, alles inne Tonne zu treten, und nochmal neu mit Datenmodellierung anzufangen, ja, Datenmodellierung ühaupt erstma zu erlernen.

    Wie man eine DB ins Form holt ist auf "Datenbank in 10 Minuten" auf Movie-Tuts aufgezeigt.

    Ich empfehle aber immer, eine Anwendung erstmal ohne DB auszuprogrammieren, und erst später eine DB zu hinterlegen. Dann ist man viel flexibler inne Entwicklung, weil diese Datenmodellse muß man ja gelegentlich ändern, und da ist wenig Aufwand besser als viel Aufwand. gugge DB-Programmierung ohne Datenbank

    Kannst auch gugge DBExtensions, oder meine anneren Tuts im Datenbank-Tut bereich - mir gehts eiglich immer nur um Databinding und Datenverarbeitung im Client - die DB dahinter ist eiglich wurst - "DatenSenke" halt: Daten von holen, Daten drin abspeichern - immer dasselbe eiglich triviale Zeugs.

    TaNgu schrieb:

    Aus den Büchern stelle ich mir das halt immer so vor, das man mit einer Form anfängt. Steuerelemente darauf platziert und diese programmiert.

    Naja, dann bleib erstma Access-verstrahlt :D , is besser.
    Am besten, erstma im Dataset das Datenmodell modellieren. Dann 1 Testform, wo man die Tabellen draufzieht und erstma rumprobiert mit Laden,Speichern usw.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Es soll Zeiten gegeben haben, da wurden Algorithmen und Abläufe programmiert, die Zeichenfolge GUI hatte da keinerlei Bedeutung.
    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!
    Hallo zusammen,

    ich weiss dieser Beitrag ist bereits etwas veraltet, aber ich habe ein "ähnliches" Problem. Ich habe bereits eine umfangreiche Anwendung mit Datenbindung geschrieben. Diese Anwendung hat aufgrund vieler Einzelbereiche nun auf viele einzelne Forms (was aus meiner Sicht sehr unübersichtlich ist.)

    Zu meinem Problem :love: :
    Ich möchte das Layout der Anwendung nun umstellen, dass ich eine Art Navigationsmenü an der linken Seite habe (das kann ich mir auch bereits erstellen) und je nach Auswahl in dieser "Navigationsleiste" ein anderer Inhalt in der Hauptform erscheint (also nicht für jede Auswahl ein extra Fenster). Ich denke mit MDI Anwendungen ist das so auch nicht lösbar oder?

    Viele Grüße

    TZollo

    Achso ich arbeite mit VB 2012 und Win Forms also noch kein WPF