Mehrere Usercontrols in WindowsForm nacheinander

  • VB.NET

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

    Mehrere Usercontrols in WindowsForm nacheinander

    Hallo,

    ich bin noch neu hier und hätte gleich mal eine Frage. :)

    Ich würde gern ein Programm erstellen, dass den Benutzer durch eine Abfolge von Schritten führt, bei jedem Schritt soll der Anwender einige Daten eingeben oder auch angezeigt bekommen. Nun habe ich mir für jeden dieser Schritte ein UserControl mit den benötigten Textfeldern, Labels etc. erstellt. Nun habe ich aber das Problem, dass ich mir nicht sicher bin, wie ich diese am besten verwalte. Ausserdem sollen die Daten aus den UserControls in ein Objekt übertragen werden. Hierbei hab ich das Problem, dass ich mir nicht ganz im klaren darüber bin, wie ich das Objekt von jedem UserControl aus aufrufen kann.

    Über Hilfe wäre ich sehr dankbar, ich versteh zwar grundsätzlich was von Programmierung und hab mich auch bereits in VB 2010 eingelesen, jedoch hab ich noch gewisse Probleme damit, den richtigen Ansatz zur Lösung eines Problems zu finden.

    Vielen Dank schon mal, falls mir jemand helfen kann!
    Willkommen im Forum. :thumbup:
    Über 3 Dinge solltest Du Dir zunächst Klarheit verschaffen:
    1. Überfrachte nicht Deine GUI mit übermäßig vielen Controls, das ist nicht zu überblicken. Organisiere viele Elemente in einem TabControl.
    2. Wisse stets, wie Deine Daten interagieren müssen, um Ergebnisse zu produzieren, organisiere einen logischen WorkFlow.
    3. Trenne GUI und Daten. Rechne nicht mit dem Inhalt von TexBoxen oder so, hole Dir zuerst die GUI-Werte (i.A. Strings) in numerische Werte (Integeer, Double), verwende typisierte Datasets und binde diese an die Controls.
    Versuch erst mal, dies grob zu verstehen. Wenn Du merkst, dass Dein bisheriger Output grob neben einer dieser Regeln steht, solltest Du dies als Handlungsbedarf interpretieren.
    Versuch, Dir einen ordentlichen Code-Style anzugewöhnen (der wird sich mit der Zeit und Deiner Erfahrung ändern).
    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!
    Vielen Dank für die Begrüßung!

    Gerade der letzte Punkt ist mir noch relativ neu, ich hab zwar bereits von DataSets gehört, weiß allerdings nicht wie ich diese verwende, bzw. an Controls binde. Hast du da eine Quelle zur Hand, die mir da schnell und einfach helfen könnte?

    radioactive_mc schrieb:

    Hast du da eine Quelle zur Hand, die mir da schnell und einfach helfen könnte?
    Da verweise ich Dich mal an den @ErfinderDesRades:, der ist der Meister der Datenanbindung.
    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!

    radioactive_mc schrieb:

    Ich würde gern ein Programm erstellen, dass den Benutzer durch eine Abfolge von Schritten führt, bei jedem Schritt soll der Anwender einige Daten eingeben oder auch angezeigt bekommen. Nun habe ich mir für jeden dieser Schritte ein UserControl mit den benötigten Textfeldern, Labels etc. erstellt. Nun habe ich aber das Problem, dass ich mir nicht sicher bin, wie ich diese am besten verwalte.
    Das findich grundsätzlich schonmal ein gutes Konzept, ich denke, es handelt sich um eine Art "Assistenten".
    Eben die Modularisierung der Funktionsbereiche in UserControls entzerrt sowohl den Code als auch die Oberfläche.

    UserControls sind auch sehr angenehm zu designen, da autarke Einheiten. Aber leider sind sie sowas von autark, dass man beim Databinding sehr tief in die Trickkiste greifen muß, damit nicht jedes autarke UserControl an sein eigenes Dataset bindet, sondern dass alle an ein gemeinsames Dataset gebunden werden.

    Ich weiß jetzt nicht recht, wie vorzugehen ich für am günstigsten hielte. In TabControlOhneReiter stelle ich eine sehr einfache Vorgehensweise zur Erstellung von Assistenten vor.

    Wie gesagt: zu UserControls würde ich ja zuraten, aber da muß man entweder selbständig es hinkriegen, die BindingSources zur Laufzeit auf das gemeinsame Dataset umzustöpseln, oder man muß mit meiner Trickkiste klarkommen: DBExtensions (nur "GeneralHelpers" und "WinformHelpers" - das "DBExtension"-Projekt kann erstmal weggelassen werden).

    Also vlt. doch erst mit TabControlOhneReiter einen Assistenten erstellen, ohne UserControls, aber mit Databinding - das ist reichlich Stoff genug: DB-Programmierung ohne Datenbank
    "DatasetOnly" auf Movie-Tuts.

    Wenn das geschnackelt ist, kann man sich die UserControl-Geschichte antun.
    Das findich grundsätzlich schonmal ein gutes Konzept, ich denke, es handelt sich um eine Art "Assistenten".
    Exakt, genau darum gehts. Hm, schade, wenns so nicht geht. Gut, dann werd ich mich mal in die von dir vorgeschlagenen Themen einlesen. Ich meld mich nach meinem Urlaub wieder, sicher mit genügend Fragen. :thumbup:
    Die Sache mit redundanten DataSets über mehrere Forms hinweg lässt sich ja mittels WinformHelpers (Me.DateSet.Register(Me)) nun ganz schön in den Griff kriegen, nur leider sehe ich nicht wie ich das ganze auch für UserControls bewerkstelligen könnte.

    Hintergrund ist folgender: Ich habe meinen Assistenten mittlerweile soweit implementiert. Leider wird die ganze Sache mit den TabControls nun relativ schnell unübersichtlich, und ich würde den Code für die einzelnen Schritte gerne in UserControls kapseln. Dazu müsste ich aber wissen, wie ich am besten vorgehe, um die BindingSources auf die jeweiligen UserControls zu legen, eben um auch hier Redundanz zu vermeiden.

    Für Hinweise bin ich dankbar! :)