Zum Fußzeileninhalt springen
Iron Academy Logo
C#-Anwendung
C#-Anwendung

Andere Kategorien

Speichern von C# WinForms-Turnierdaten in einer Datenbank — Ein tiefer Einblick mit Tim Corey

Tim Corey
2h 32m 16s

In Lektion 19 der Serie "C# App von Anfang bis Ende" zeigt Tim Corey einen der wichtigsten Meilensteine des Projekts: das Speichern eines vollständig erstellten WinForms-Turniers in einer Datenbank (und Textdateien). WinForms ist ein Framework zur Erstellung von Windows-Desktopanwendungen, was es zur idealen Wahl macht, um die Datenpersistenz in einem realen Kontext zu demonstrieren.

Dieser Artikel basiert vollständig auf Lektion 19 – Erstellen des Turnierformulars (Teil 5) und folgt Tims eigener schrittweiser Argumentationsweise, dem Debugging-Prozess und den Codierungsmustern.

Anstatt Theorie zu präsentieren, geht Tim durch echten Anwendungscode, zeigt, wie Modelle gespeichert, rehydriert, debuggt und korrigiert werden, wenn Dinge unvermeidlich kaputtgehen. Das macht die Lektion besonders wertvoll, um das praktische Speichern von Daten in WinForms zu verstehen.

Einführung

Ganz am Anfang stellt Tim Lektion 19 vor und erklärt, dass heute endlich der Tag ist, an dem das Formular zur Erstellung eines Turniers abgeschlossen wird. Er räumt ein, dass dieses Formular eines der bisher größten war, mit vielen beweglichen Teilen, die sich überwältigend anfühlen können. In dieser Lektion lernen Sie, wie Sie das ereignisgesteuerte Modell von WinForms und Funktionen zur schnellen Anwendungsentwicklung anwenden können, um ein Formular für die reale Welt zu vervollständigen.

Tim beruhigt die Zuschauer, dass die Komplexität in handhabbare Teile zerlegt wurde und dass der heutige Fokus auf der finalen Logik liegt, die erforderlich ist, um Turnierdaten zu speichern - entweder in einer SQL-Datenbank oder einer Textdatei - und dann ist die Funktion fertig. WinForms ist ideal für die schnelle Anwendungsentwicklung (RAD) und den Aufbau interner Geschäftswerkzeuge oder leichter Dienstprogramme, und sein relativ einfaches ereignisgesteuertes Modell und die Vielzahl an Online-Ressourcen erleichtern es neuen Entwicklern, es zu erlernen.

Erstellen eines neuen Projekts in Visual Studio

Der Einstieg in eine Windows Forms-Anwendung ist mit Visual Studio problemlos. Beginnen Sie damit, Visual Studio zu öffnen und im Startfenster "Neues Projekt erstellen" auszuwählen. Verwenden Sie im Dialogfeld "Neues Projekt erstellen" die Suchleiste, um "Windows Forms App" einzugeben - dies bringt schnell die gewünschte Vorlage hervor. Um Ihre Optionen einzugrenzen, filtern Sie nach C# als Sprache und Windows als Plattform.

Sobald Sie den "Windows Forms App (.NET Framework)"-Projekttyp gefunden haben, wählen Sie ihn aus und klicken auf Weiter. Geben Sie im Fenster "Ihr neues Projekt konfigurieren" Ihrem Projekt einen Namen (zum Beispiel HelloWorld), wählen Sie einen Standort und klicken dann auf Erstellen. Visual Studio generiert eine neue Lösung und öffnet Ihr Hauptformular, das als grafische Benutzeroberfläche für Ihre Anwendung dient. Dieses Formular ist der Ort, an dem Sie Ihre Benutzeroberfläche entwerfen und Steuerelemente hinzufügen, und so das Fundament für Ihre Windows-Desktopanwendung legen. Die Vorlage enthält alle notwendigen Dateien und Verweise auf das .NET Framework, sodass Sie sich sofort darauf konzentrieren können, die Features und Funktionen Ihrer App zu entwickeln.

Überprüfung der Logik der Schaltfläche "Turnier erstellen"

Tim beginnt mit einer Überprüfung. Er erklärt, dass alles vom "Turnier erstellen"-Button im Programm ausgeht. In einem C# WinForms-Programm werden Ereignishandler geschrieben, um Code als Reaktion auf spezifische Benutzeraktionen auszuführen, wie zum Beispiel das Klicken auf die "Turnier erstellen"-Schaltfläche. Bis zu diesem Punkt hat die Anwendung bereits:

  • Benutzereingaben validiert

  • Das Turnierobjekt erstellt

  • Runden und Paarungen im Speicher erstellt

Das fehlende Stück, erklärt Tim, ist, diese Daten zu speichern. Bisher konnte die App Turniere, Preise und Einträge speichern - aber Informationen über Runden fehlten. Genau das behebt diese Lektion.

Speichern des Turniers in SQL: Das Gesamtbild

Tim navigiert zur CreateTournament-Methode des SQL-Connectors und erinnert die Zuschauer daran, dass das Speichern von Daten einem klaren Muster folgt:

  1. Das Turnier selbst speichern

  2. Die Turnier-ID erhalten

  3. Preise speichern

  4. Einträge speichern

  5. Jetzt: Runden und Paarungen speichern

Hinweis: Es ist wichtig, diese Speicherreihenfolge einzuhalten, um sicherzustellen, dass alle zugehörigen Daten korrekt zugeordnet sind und die Datensicherheit der Anwendung gewahrt bleibt.

Tim betont, dass Muster gut sind, und diese Lektion folgt dem zuvor etablierten Muster.

WinForms unterstützt auch die Erstellung wiederverwendbarer UI-Elemente wie Schaltflächen, Textfelder und Labels, was hilft, Konsistenz in der Datenstruktur der Anwendung zu bewahren.

Verstehen der Komplexität der Datenstruktur

Hier macht Tim eine Pause, um zu erklären, warum die Speicherung von Runden komplexer ist.

  • Ein Turnier hat Runden

  • Jede Runde ist eine Liste von MatchupModel

  • Jedes Matchup enthält MatchupEntryModel Objekte

Tim erklärt, dass dies eine Liste einer Liste ist und dass diese Komplexität auf diesem Stadium normal ist. Er ermutigt die Zuschauer, nicht in Panik zu geraten - dies ist nur ein natürliches Ergebnis der Modellierung realer Daten.

Er merkt auch an, dass WinForms-Anwendungen mit Komponenten gebaut werden, wie zum Beispiel Datenraster und UI-Steuerelemente, die Entwicklern helfen, funktionsreiche Desktop-Anwendungen effizient zu erstellen. Alle visuellen Elemente in der Windows Forms-Klassenbibliothek leiten sich von der Control-Klasse ab und bieten eine konsistente Grundlage für den Bau und die Anpassung der Benutzeroberfläche.

Warum die Speicherreihenfolge wichtig ist

Eine der wichtigsten Erklärungen im Video erfolgt hier.

Tim erklärt, dass Daten in einer bestimmten Reihenfolge gespeichert werden müssen, weil:

  • Ein Matchup-Eintrag nicht gespeichert werden kann, bis die übergeordnete Matchup-ID existiert

  • Eine Runde kann sich nicht auf die nächste Runde beziehen, bis die vorherige IDs hat

Er erklärt, dass, da Objekte auf dieselben Speicheradressen verweisen, sobald die ID an einem Ort gefüllt ist, alle Verweise automatisch aktualisiert werden. Jedoch müssen Entwickler möglicherweise Objektverweise ändern, während IDs zugewiesen werden, was ein typischer Teil des ereignisgesteuerten Prozesses in C# WinForms-Anwendungen ist, bei denen die Anwendung auf Benutzeraktionen und Datenänderungen reagiert.

Sicherstellen, dass alle Modelle IDs haben

Tim weist auf eine wichtige Korrektur hin: MatchupEntryModel hat noch keine ID-Eigenschaft.

Selbst wenn es nicht sofort benötigt wird, fügt Tim es trotzdem hinzu und erklärt, dass jedes modellbasierte Datenbankmodell eine ID für Konsistenz und zukünftigen Gebrauch haben sollte. Standardmäßig verwenden Windows Forms-Anwendungen Dateien wie Form1.Designer.cs, um UI-Code automatisch zu generieren und so eine standardisierte Struktur und Verhaltensweise in der Anwendung zu gewährleisten.

Die Logik in einfache Schritte zerlegen

Dieser Abschnitt dient als Tutorial zum Speichern von Daten in einer C WinForms-Anwendung.

Tim verwendet eine seiner Lieblingslehranekdoten: einen Elefanten Biss für Biss zu essen.

Er zerlegt die Speicherung in klare Schritte:

  1. Durch jede Runde schleifen

  2. Innerhalb jeder Runde durch Matchups schleifen

  3. Jedes Matchup speichern

  4. Durch Matchup-Einträge schleifen

  5. Jeden Eintrag speichern

Jeder Schritt ist für sich genommen einfach - und zusammen sind sie stark.

Der unkomplizierte Drag-and-Drop-Visualdesigner in Visual Studio macht WinForms hervorragend zum Erstellen interner Werkzeuge, Prototypen und einfacher Anwendungen.

Durchlaufen von Runden und Matchups

Tim zeigt, wie man durch eine Liste von Runden schleifen, wobei jede Runde selbst eine Liste von MatchupModel ist.

Er vermeidet absichtlich 'var' zunächst und erklärt warum: Explizite Typen helfen Entwicklern zu verstehen, was sie durchlaufen, insbesondere beim Arbeiten mit verschachtelten Listen. Klarer Code ist besonders wichtig beim Arbeiten mit verschiedenen Programmiersprachen in der Windows Forms-Entwicklung, da er die Wartbarkeit verbessert und die Lokalisierung für mehrere Sprachen unterstützt.

Er teilt auch eine wichtige Philosophie:

"Der beste Code ist der, den ein Junior-Entwickler verstehen kann."

Windows Forms-Anwendungen sind ereignisgesteuert und werden von Microsofts .NET Framework unterstützt.

Erstellen der Matchups Insert Stored Procedure

Tim wechselt zu SQL und erstellt spMatchups_Insert.

Er erklärt die Felder klar:

  • Turnier-ID

  • Matchup-Runde

  • Gewinner-ID (nullable)

Zusätzliche Felder, wie z. B. Datum, könnten hinzugefügt werden, um zu verfolgen, wann Begegnungen stattfinden.

Tim setzt diese Phase absichtlich keinen Gewinner fest. Selbst wenn eine Begegnung ein Freilos ist, zieht er es vor, Gewinner später mit derselben Logik wie bei echten Begegnungen zu behandeln.

Windows Forms bietet Zugriff auf native Windows-Benutzeroberflächen-Steuerelemente durch das Verpacken bestehender Windows-APIs in verwaltetem Code.

Speichern von Matchup-Einträgen und Umgang mit NULLs

Tim erstellt ein weiteres gespeichertes Verfahren: spMatchupEntries_Insert.

Er erklärt:

  • Punktzahlen sind NULL, weil Spiele nicht gespielt wurden

  • NULL ist nicht dasselbe wie Null

  • TeamCompeting kann in späteren Runden NULL sein

Er gibt ein unvergessliches Beispiel, bei dem er Fußball und Golf verwendet, um zu erklären, warum Null ein realer Wert ist, während NULL bedeutet, dass noch kein Wert existiert.

Anwendungseinstellungen können in Ihrem Windows Forms-Projekt konfiguriert werden, um unterschiedliche Datenszenarien zu handhaben, wie z. B. wie NULL-Werte in Steuerelementen angezeigt oder verarbeitet werden.

Windows Forms ist Bestandteil von Microsoft .NET, .NET Framework oder Mono.

Merkmale und Funktionalität einer .NET Framework-Anwendung

Eine Windows Forms-App, die auf dem .NET Framework aufgebaut ist, bietet einen leistungsstarken Satz an Funktionen für die Erstellung moderner Windows-Desktopanwendungen. Mit Windows Forms (WinForms) haben Sie Zugriff auf eine reichhaltige grafische Benutzeroberflächenbibliothek (GUI), die das Design intuitiver und interaktiver Benutzeroberflächen erleichtert. WinForms ist ein kostenloses, Open-Source-Framework, das mit Microsoft .NET, .NET Framework und Mono geliefert wird und eine nahtlose Integration mit nativen Windows-Steuerelementen und der Windows-API durch verwalteten Code bietet.

Die Visual Studio IDE verbessert Ihre Entwicklungserfahrung mit Tools wie dem Windows Forms Designer, mit dem Sie gängige Steuerelemente - wie Schaltflächen, Textfelder und Labels - direkt in Ihr Formular ziehen und ablegen können. Dieser visuelle Ansatz beschleunigt das UI-Design und ermöglicht es Ihnen, Eigenschaften und Ereignisse mithilfe des Eigenschaftenfensters anzupassen. Mit integrierter Unterstützung für Codebearbeitung, Debuggen und Projektmanagement rationalisiert Visual Studio den Aufbau, die Prüfung und die Optimierung Ihrer Windows-Desktopanwendungen. Egal, ob Sie Geschäftswerkzeuge, Dienstprogramme oder Bildungsoftware erstellen, das .NET Framework und WinForms bieten eine robuste Plattform für die Bereitstellung funktionsreicher, reaktionsschneller und benutzerfreundlicher Anwendungen.

Debuggen mit Edit and Continue

Wenn eine Ausnahme auftritt, gerät Tim nicht in Panik - er lehrt.

Er verwendet die Edit and Continue-Funktion von Visual Studio, um:

  • Die Ausführung anzuhalten

  • Null-Prüfungen einzuführen

  • Die Ausführung ohne Neustart der App fortzusetzen

Tastenkombinationen, wie die Verwendung von 'Ctrl'-Kombinationen (z.B. 'Ctrl + Alt + X', um die Toolbox zu öffnen), können das Debuggen und den Zugriff auf UI-Steuerelemente in Visual Studio beschleunigen.

Er zeigt, wie man:

  • Prüfen, ob TeamCompeting null ist

  • Null an SQL übergeben, anstatt .ID zuzugreifen

  • Dieselbe Logik auf ParentMatchup anwenden

Dies ist ein praxisnaher Debugging-Workflow, genau so wie Tim ihn verwendet.

Visual Studio bietet eine Vielzahl von Funktionen und Tools für die C#-Entwicklung, einschließlich des Windows Forms Designers.

Überprüfen der Daten in SQL

Nach dem Beheben von zwei kleinen Fehlern fragt Tim die Datenbank ab.

Er bestätigt:

  • Begegnungen sind korrekt gespeichert

  • Rundennummern sind genau

  • Freilos-Logik funktioniert

  • Eltern-Kind-Beziehungen sind korrekt

Beachten Sie die korrekten Beziehungen und Daten in der Datenbank nach dem Speichern, da dieses visuelle Feedback wichtig ist, um zu überprüfen, ob die Logik der Anwendung wie beabsichtigt funktioniert.

Tim weist darauf hin, dass nur zwei Fehler in einem sehr komplexen Feature auftraten - und schreibt diesen Erfolg der Planung, Mustern und dem Zerlegen der Arbeit in kleine Teile zu.

Windows Forms bietet eine Plattform, um Client-Anwendungen für Desktop-, Laptop- und Tablet-PCs zu schreiben, was es zu einer vielseitigen Wahl für die Windows-Entwicklung macht.

Kompilieren und Vorbereiten von Nachschlagemethoden

Tim beginnt damit sicherzustellen, dass das Projekt noch kompiliert, bevor er sich den unfertigen Teilen zuwendet. Um 1:17:08 erklärt er, dass das System Zeichenfolgen in Methoden übergeben und ein oder mehrere MatchupEntryModel-Objekte zurückerhalten wird, die aus Textdateien gezogen werden.

Um 1:17:40 implementiert Tim eine Methode namens LookupTeamById(int id). Er erklärt, dass, wenn Daten in einer Textdatei gespeichert werden, nur die ID gespeichert wird, nicht das vollständige Objekt. Daher muss die Anwendung, wenn Daten geladen werden, diese ID zurück in ein vollständiges TeamModel rehydrieren.

Tim weist darauf hin, dass dies keine neue Logik ist - er wiederverwendet einfach das gleiche Muster, das bereits zum Laden aller Teams aus der Datei verwendet wurde. Er betont, dass diese Wiederverwendung absichtlich und ein Kernvorteil der richtigen Strukturierung des Codes ist. Entwickler können auch auf bestehende Methoden und offizielle Dokumentation verweisen, um zusätzliche Anleitung bei der Implementierung ähnlicher Logik zu erhalten.

Windows Forms wird als Ersatz für die früheren und komplexeren auf C++ basierenden Microsoft Foundation Class Library für GUI-Entwicklung gesehen.

Zentralisieren von Dateipfaden mit GlobalConfig

Um 1:20:27 macht Tim eine Pause und weist auf ein Designproblem hin: Dateinamen werden überall übergeben, obwohl es sich um Konstanten handelt. Er sagt offen, dass sich dies "lächerlich" anfühlt.

Um dies zu beheben, verschiebt Tim Dateinamenkonstanten in GlobalConfig und macht sie öffentlich. Um 1:21:33 erklärt er, dass dadurch das Übergeben von Dateipfaden durch mehrere Ebene von Methoden vermieden wird. Der Lösungsexplorer in Visual Studio hilft beim Verwalten dieser Projektdateien und der gesamten Struktur, was es einfacher macht, solche Konstanten zu lokalisieren und zu aktualisieren.

Jedoch ist Tim um 1:22:24 ehrlich über einen Mangel: Diese Konstanten existieren jetzt an zwei Orten - GlobalConfig und TextConnector. Er nennt dies explizit eine Verletzung von DRY (Don't Repeat Yourself) und merkt an, dass dies später refaktoriert werden sollte, aber heute nicht der Tag dafür ist.

Es ist auch wichtig zu beachten, dass Windows Forms kein Standard-Anwendungsframework wie die Microsoft Foundation Class (MFC) bereitstellt.

Umwandeln von Strings in Matchup Entry Models

Um 1:24:37 beginnt Tim mit der Implementierung von ConvertStringToMatchupEntryModel. Er erklärt, dass Matchup-Einträge als pipe-getrennte IDs gespeichert werden, daher besteht der erste Schritt darin, den String an der Pipe zu teilen (|). Im Gegensatz zu Webanwendungen, die eine Seite als primäres UI-Container für Navigation und Layout verwenden, verwenden WinForms Formulare, um die Benutzeroberfläche zu organisieren.

Um 1:25:17 durchläuft er dann jede ID, sucht sie aus der Matchup-Eintragsdatei und fügt das entsprechende Modell zur Ausgabeliste hinzu. Das Muster bleibt konsistent:

laden → umwandeln → nach ID filtern → Modell zurückgeben

Tim betont, dass Konsistenz das Debugging später möglich macht.

Windows Forms-Anwendungen können unter Verwendung von .NET-Programmiersprachen wie C# oder Visual Basic entwickelt werden.

Erstellung der ConvertToMatchupEntryModels-Erweiterung

Um 1:27:56 erstellt Tim eine Erweiterungsmethode ConvertToMatchupEntryModels(List< string>). Um den Prozess zu leiten, kopiert er eine vorhandene Umstellungsmethode (für PersonModel) und verwendet sie rein als Musterreferenz.

Bis 1:30:28 ordnet Tim die Spalten explizit zu:

  • Spalte 0 → ID

  • Spalte 1 → TeamCompeting ID

  • Spalte 2 → Punktzahl

  • Spalte 3 → ParentMatchup ID

Er erklärt, dass der gespeicherte Wert nur eine ID ist, daher muss das vollständige Objekt mit Nachschlagemethoden wiederhergestellt werden. Einige UI-Komponenten und Themen in WinForms sind von Microsoft Office inspiriert, wie zum Beispiel Office 2019 Colorful und Office 2019 Black, um ein vertrautes Benutzererlebnis zu bieten.

Drittanbieter wie DevExpress bieten umfassende UI-Komponenten-Suiten für WinForms an.

Sicheres Umgang mit Eltern-Matchups

Um 1:38:49 identifiziert Tim ein großes Problem: Elternpaarungen könnten nicht existieren (insbesondere in der ersten Runde). Der Aufruf von First() bei einer fehlenden ID würde die App abstürzen lassen.

Sein Fix um 1:39:09 verwendet int.TryParse. Wenn das Parsen fehlschlägt, wird ParentMatchup auf null gesetzt. Tim erklärt sorgfältig, dass genau dies bei Erstrundenbegegnungen geschehen sollte. Neue Funktionen und Fehlerbehebungen sind oft in jeder Version von WinForms oder Drittanbieter-Bibliotheken enthalten, die die Handhabung solcher Szenarien verbessern.

Er betont, dass Abstürze nur akzeptabel sind, wenn ungültige Daten niemals existieren sollten, wie zum Beispiel eine ungültige Team-ID.

Das DevExpress WinForms Abonnement umfasst über 190 UI-Steuerelemente und Bibliotheken und bietet umfangreiche Möglichkeiten zum Erstellen robuster Anwendungen.

Speichern von Matchups und Einträgen in Dateien

Um 1:44:00 beginnt Tim mit dem Speichern von Daten. Er lädt alle Begegnungen, bestimmt die nächste verfügbare ID, weist sie zu und geht dann dazu über, Begegnungseinträge zu speichern. Nach dem Speichern Ihrer Daten können Sie die Anwendung testen, indem Sie im Visual Studio auf die Schaltfläche "Start" klicken oder die Taste F5 drücken, um Ihre WinForms-Anwendung auszuführen.

Bis 1:46:44 hebt Tim die Stärke wiederverwendbarer Methoden hervor—das Laden und Konvertieren von Dateien sei jetzt "langweilig", was seiner Meinung nach eine gute Sache ist.

Er speichert zuerst die Matchup-Einträge, damit jeder Eintrag eine ID erhält, und speichert dann das Matchup selbst, das diese Eintrags-IDs als durch Pipe getrennte Zeichenfolgen speichert.

Zusätzlich enthält das DevExpress WinForms-Abonnement eine Reporting-Suite mit einem Endbenutzer-Berichtsdesigner, der Ihre WinForms-Anwendungen verbessern kann.

Schreiben von Matchup-Einträgen in die Datenbank

Um 1:49:43 baut Tim die Speicherroutine Schritt für Schritt auf. Er kehrt dabei sorgfältig das zuvor verwendete Umwandlungsmuster um:

  • ID

  • TeamCompeting ID (oder Leerzeichen)

  • Punktzahl

  • ParentMatchup ID (oder leerer String)

Nachdem die Speicherlogik erklärt wurde, ist es wichtig zu beachten, dass WinForms auf verschiedenen .NET-Plattformen unterstützt wird, was Kompatibilität und kontinuierliche Updates gewährleistet.

Um 1:52:02 erklärt Tim, warum leere Zeichenfolgen essenziell sind: Sie bewahren die Spaltenreihenfolge, ohne die Logik des Parsens zu stören.

Zusätzlich unterstützen die DevExpress WinForms-Steuerelemente die DirectX-Hardwarebeschleunigung für verbesserte Leistung.

Speichern von Begegnungen und Gewinnern

Um 1:55:02 speichert Tim die Matchups selbst. Da Matchups mehrere Einträge haben können, wandelt er die Eintragslisten mit einer wiederverwendeten Hilfsmethode in durch Pipes getrennte Strings um. Entwickler können die Toolbox in Visual Studio verwenden, um Steuerelemente wie Buttons und Labels zu ihren Windows Forms hinzuzufügen, was die Gestaltung der Benutzeroberfläche erleichtert.

Um 1:58:30 Uhr wendet er die gleiche Nullbehandlungslogik für das Gewinnerfeld an. Falls noch kein Gewinner existiert, wird ein leerer String gespeichert.

Windows Forms ermöglicht es Entwicklern, Anwendungen für Desktops, Tablets und PCs zu erstellen.

Rehydrieren von Runden beim Laden von Turnieren

Um 02:02:03 wendet sich Tim der letzten TODO zu: dem Laden der Rundeninformationen. Er erklärt, dass Runden als Listen von Matchup-IDs gespeichert werden, zuerst durch Pipes, dann durch Carets (^) getrennt.

Um 2:09:13 rekonstruiert er die vollständige geschachtelte Struktur:

  • IDs → MatchupModels

  • MatchupModels → Rundenlisten

  • Rundlisten → TournamentModel

Nach der Erklärung des Umbaus merkt Tim an, dass WinForms im Gegensatz zu einigen anderen Frameworks einen anderen Ansatz zur Organisation von UI und Daten verwendet, was beeinflussen kann, wie Entwickler verschachtelte Strukturen verwalten.

Tim betont, dass diese Verschachtelung erklärt, warum sich der Code komplex anfühlt – und warum es so wichtig ist, ihn manuell durchzugehen.

Zusätzlich sei erwähnt, dass das DevExpress WinForms-Abonnement anpassbare Themes und Skins für WinForms-Anwendungen beinhaltet.

Echte Fehler Debuggen

Ab 2:11:22 startet Tim absichtlich die App und debuggt:

  • NullReferenceException

Eingabestring nicht im richtigen Format

Die Sequenz enthält keine Elemente

Anstatt Fehler zu verbergen, zeigt Tim genau, wie man sie verfolgt, Werte inspiziert und die Ausführungsreihenfolge analysiert. WinForms wurde vor Jahren erstmals veröffentlicht und hat sich im Laufe der Zeit weiterentwickelt.

Um 2:20:30 identifiziert er ein Problem beim Speichern von Daten: Matchups mussten existieren, bevor Einträge auf sie verweisen konnten. Seine Lösung ist pragmatisch – zweimal speichern. Er gibt offen zu, dass es nicht elegant ist, sagt aber:

"Funktionierender Code ist besser als refaktorisierter Code, der noch einen Fehler enthält."

Windows Forms ist jetzt als Open-Source-Projekt for .NET Core auf GitHub verfügbar.

Bereitstellung einer Windows Forms-App

Nach dem Erstellen und Testen Ihrer Windows Forms-App in Visual Studio besteht der nächste Schritt in der Bereitstellung – der Bereitstellung Ihrer Anwendung für Benutzer. Visual Studio bietet mehrere Bereitstellungsoptionen, wobei ClickOnce eine der bequemsten für Windows-Desktopanwendungen ist. ClickOnce ermöglicht es Ihnen, Ihre App in einem Netzwerkfreigabeordner, auf einem Webserver oder sogar auf einer CD/DVD zu veröffentlichen, was die Installation für Endbenutzer einfach macht.

Um eine Bereitstellung vorzunehmen, verwenden Sie einfach die Veröffentlichungstools in Visual Studio, um Ihre App zu verpacken. Testen Sie Ihre Anwendung vor der Veröffentlichung gründlich mit den Debugging-Tools von Visual Studio, um Fehler oder Probleme in Ihrem Code zu erkennen und zu beheben. Sobald es bereitgestellt ist, können Benutzer Ihre App installieren, indem sie die Setup-Datei ausführen oder auf eine Verknüpfung klicken. Die App wird ausgeführt und zeigt ihre grafische Benutzeroberfläche zur sofortigen Interaktion an. Unabhängig davon, ob Sie ClickOnce, Windows Installer oder ein Drittanbieter-Bereitstellungstool wählen, gewährleistet der Prozess, dass Ihre Benutzer mit minimalem Aufwand auf die volle Funktionalität und die Features Ihrer Windows Forms-App zugreifen können. Dieser optimierte Bereitstellungsprozess hilft Ihnen, zuverlässige, professionelle Windows-Desktop-Anwendungen an Ihr Publikum zu liefern.

Abschließende Gedanken

Am Ende dieser Lektion demonstriert Tim Corey ein vollständiges, funktionierendes Datenspeicherungssystem unter Verwendung von Textdateien als Datenbank. Wichtiger noch, er zeigt, wie reale Fehler entstehen, wie Muster bei der Behebung helfen und warum das Verständnis der Ausführungsreihenfolge wichtiger ist als Perfektion.

Diese Lektion dreht sich nicht um ausgefallene Datenbanken - es geht darum, wie ein Entwickler zu denken.

Hero Worlddot related to Speichern von C# WinForms-Turnierdaten in einer Datenbank — Ein tiefer Einblick mit Tim Corey
Hero Affiliate related to Speichern von C# WinForms-Turnierdaten in einer Datenbank — Ein tiefer Einblick mit Tim Corey

Verdienen Sie mehr, indem Sie teilen, was Sie lieben

Erstellen Sie Inhalte für Entwickler, die mit .NET, C#, Java, Python oder Node.js arbeiten? Verwandeln Sie Ihr Fachwissen in ein zusätzliches Einkommen!

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an