Laden...

Speichefrage beim Verlassen von Dropdowns & mehreren Labels Test in Schleide zuweisen

Erstellt von Shayliar vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.359 Views
S
Shayliar Themenstarter:in
20 Beiträge seit 2019
vor 4 Jahren
Speichefrage beim Verlassen von Dropdowns & mehreren Labels Test in Schleide zuweisen

Hallo ihr lieben,

wahrscheinlich wieder nur zwei kleine Probleme.

I.

Ich habe in meiner Windows Form ein DropDown-Feld mit mehreren Komponenten.

Nun möchte ich wenn man Option 1 verlässt um zu einer anderen Option zu wechseln, das nachgefragt wird ob gespeichert werden soll.

II.

ich habe in meinem Projekt wie im Bild zu sehen:

Zimmer aufgelistet, sie sind alle gleich aufgebaut.
Die Daten kommen aus einer XML Datei und werden in ein Array gelesen.

Die Benennung erfolgt wie eine Aufzählung.

Also z.B. das Label was den Zimmernamen angibt wird durchnummeriert:
lbl_Bett01 - lbl_Bett32

so ergeht es mit allen Labels, TextBoxen, Radiobuttons etc. (insgesamt 14 Elemente pro Bett-Platz)

Nun ist es so , das ich bisher das ich nach dem einlesen bei jedem der 14 Elemente pro Bett-Platz bei 32 Betten alles per Hand zugewiesen habe...
Das geht und funktioniert, ist nur umständlich.

Gibt es eine Möglichkeit

z.B.
die lbl_Bett01.Text - lbl_Bett32.Text mit einer Schleife einen Wert zuordnen zu lassen ?
Dann brauche ich wenns gut läuft nur noch 1 Schleife 😉

lg

hier könnte deine Signatur stehen!

463 Beiträge seit 2009
vor 4 Jahren

Zu #1: Ein wenig Dokumentation lesen und sich selbst informieren ist durchaus erlaubt.
Das Event SelectedIndexChanged ist hier dein Freund

Zu #2: Ich würde hier ein CustomControl (Zimmer) anlegen und dieses in einem Array anlegen und dann die Daten zuweisen

2.207 Beiträge seit 2011
vor 4 Jahren

Hallo Shayliar,

bitte beachte [Hinweis] Wie poste ich richtig? 1.2 Nur ein Thema pro Thread.

  • Es ist unmöglich einen Titel zu finden, da kein Problem richtig beschrieben werden kann
  • Es ist unmöglich zu moderieren, die Threads laufen zwangsläufig auseinander
  • Hilfesuchende haben es brutal schwer ihre infos herauszufinden. Der Sinn des Forums ist somit dahin.

Der Thread bleibt erstmal auf, da eine Antwort schon da ist. Normalerweise hätte ich ihn gelöscht, dir eine Kopie des Beitrags zugesandt und dich gebeten daraus zwei Threads zu machen. So kann dir besser geholfen werden.

Danke und Gruss

Coffeebean

5.657 Beiträge seit 2006
vor 4 Jahren

nur zwei kleine Probleme

Nach dem zu urteilen, was du dazu schreibst, ergeben sich die Probleme aus einer unsachgemäßen Herangehensweise, fehlerhaften Architektur, fehlender Planung und mangelnder Erfahrung. Diese Probleme jetzt oberflächlich zu beheben, wird lediglich weitere Probleme in der Zukunft verursachen.

Daher hier ein paar allgemeine Anmerkungen dazu.

Datenzugriff:

  • XML ist die denkbar schlechteste Variante, um diese Art von Daten zu speichern. Es müssen immer alle Datensätze gelesen und nach einer Änderung wieder gespeichert werden. Außerdem kann jeder (Unbefugte) Änderungen in einem Texteditor an den Daten vornehmen, ohne irgendwelche Spuren zu hinterlassen.

  • Auflistungen sollten auch als solche verwaltet werden, und im Datenmodell (das bei dir anscheinend komplett fehlt) auch als Auflistungen (Listen bzw. Arrays) organisiert sein.

Logik:

  • Änderungen an den Daten oder Neu-Initialisierungen sollten in der Logikschicht auf dem Datenmodell vorgenommen werden, und nicht in der Benutzeroberfläche auf den einzelnen Steuerelementen. Dann kannst du auch mit einer einfachen Schleife über die Elemente in einer Auflistung iterieren, und Eigenschaften initialisieren oder aktualisieren.

  • Nur dann kannst du die Logik überhaupt automatisiert testen, und damit sicherstellen, daß dein Programm überhaupt tut, was es tun soll, besonders nach weiteren Änderungen.

Benutzeroberfläche:

  • Benutze DataBinding, um dein Datenmodell an die Oberfläche zu binden. Dann mußt du nicht alles manuell updaten und dir dadurch weitere mögliche Fehlerquellen einhandeln.

  • Benutze Listenansichten oder DataGrids, um tabulare Daten anzuzeigen, und Detailansichten, um einzelne Datensätze zu ändern. Dann ergeben sich auch keine undefinierten Zustände, wo du nicht weißt, ob die Daten geändert wurden oder nicht.

Hier ein paar Links zur Einführung:
[Artikel] Drei-Schichten-Architektur
[Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio
[Artikel] MVVM und DataBinding (am Ende gibt es einen Link zu DataBinding mit Windows Forms)

**Insgesamt hoffe ich, daß das nur ein Übungsprojekt ist, und nicht (niemals) im produktiven Einsatz befindlich ist! **Du hast keine Möglichkeit, die Datenintegrität zu garantieren, kannst Änderungen nicht verfolgen, und die Funktionialität ist komplett ungetestet, und kann aufgrund der fehlenden Architektur auch nicht getestet werden. Und bei dem, was dein Screenshot zeigt, handelt es sich offenbar um Daten, die zum einen extrem sensible persönliche Informationen darstellen, und von denen zum anderen offenbar die Gesundheit oder sogar das Leben von Menschen abhängt. Stell dir vor, die Diagnose oder die Allergien werden bei einer Änderung nicht abgespeichert, oder kommen durcheinander. Wer will die Verantwortung dafür übernehmen, wenn durch einen Fehler in deinem Programm jemand geschädigt wird?

Weeks of programming can save you hours of planning

S
Shayliar Themenstarter:in
20 Beiträge seit 2019
vor 4 Jahren

Vielen Dank für das Feedback,
natürlich hast du mit einigen Kritikpunkten mehr als recht. Jedoch muss jeder irgendwo anfangen. Ich denke auch, es ist ein Unterschied, ob jemand alle paar Wochen mal ein paar Stunden hat um sich diesem Thema zu widmen oder man das tagtäglich etc. macht.

Der Sinn hinter diesem Versuch ist es in der Tat , das jeder den Inhalt ändern/speichern soll.

das XML die schlechte Variante für die Speicherung ist, natürlich das verstehe ich. Doch war dies weder meine Frage noch meine aktuelle Problematik. Mit dem Abspeichern/laden aus einer sicheren Datenquelle heraus beschäftige ich
mich an einem anderen Punkt.

Die Daten werden schon in einem Array geladen (noch aus der XML Datei heraus)

  • Änderungen an den Daten oder Neu-Initialisierungen sollten in der Logikschicht auf dem Datenmodell vorgenommen werden, und nicht in der Benutzeroberfläche auf den einzelnen Steuerelementen. Dann kannst du auch mit einer einfachen Schleife über die Elemente in einer Auflistung iterieren, und Eigenschaften initialisieren oder aktualisieren.

Aber es ist ja gerade der Sinn der Sache das der Benutzer auf der Oberfläche, die Informationen aktualisiert und ändert und dann abspeichert.

Der Sinn hinter dem ganzen ist, das um Informationen von einer Schicht zur nächsten weiter zu geben (aus zu drucken in einer vorgefertigten Excel-Tabelle). Dazu müssen alle Zimmer angezeigt werden, Die Informationen bei Bedarf geändert werden, Informationen von einem Zimmer ins andere geschoben werden. Wie gesagt das funktioniert auch alles, aber eben sehr unelegant.
Und dies soll 1. so passieren, das der Anwender klare Struktur hat (welcher Patient welche Information, welches Zimmer). Nicht zuviele Möglichkeiten hat (Restriktion der Informationsannahme , z.B. 80 Zeichen bei Diagnose etc..) und 2. das beim Ausdruck durch einer fixierten Excel-Tabelle es nicht dazu kommt das der Anwender plötzlich die Übersicht noch händisch ändert und es nicht mehr ins vorgegebene Format passt.

Das Programm macht bereits alles, was es machen soll (bis eben auf den Leave.Control Event) , welches ich allerdings auch schon grundsätzlich gelöst habe, für mich in meiner Herangehensweise.

Benutzeroberfläche:

  • Benutze DataBinding, um dein Datenmodell an die Oberfläche zu binden. Dann mußt du nicht alles manuell updaten und dir dadurch weitere mögliche Fehlerquellen einhandeln.

  • Benutze Listenansichten oder DataGrids, um tabulare Daten anzuzeigen, und Detailansichten, um einzelne Datensätze zu ändern. Dann ergeben sich auch keine undefinierten Zustände, wo du nicht weißt, ob die Daten geändert wurden oder nicht.

Die für mich wichtigsten Aussagen aus dem gesamten Text, mit dem ich mit beschäftigen muss.

Vielen Dank fürs Feedback,
das Programm funktioniert, ist sehr unelegant und mit Sicherheit für Profis desaströs geschrieben..
Daher heißt es für mich, ran an den Planungstisch und mich mit einigen hier erwähnten punkten von Grund auf noch mal beschäftigen und rein arbeiten muss.

Und natürlich ist dies nur ein Übungsobjekt, was nicht in den Einsatz kommt., Des weiteren hat dies nichts mit Daten zu tun, die über den Patienten etwas entscheiden, sondern nur als Informationsstütze dient... Denn kein Weg geht daran vorbei vor der dem Patientenkontakt sich mit seiner Akte/Kurve (eventuell sofern vorhanden digitalen Akte) zu beschäftigen.
DIES ist kein Ersatz für die Pflichten die jedem obliegt, der mit Patienten arbeitet.
Und die Funktionen die hinterlegt sind, funktionieren alle, wurden auch getestet .. also so ganz ist die Funktionalität nicht ab zu streiten 😉

Aber natürlich gehe ich gerade mit den Tipps zur Architektur , Databindung und den anderen Anmerkungen noch mal sehr ausdauernd in mich und werde auf Grund dessen nochmal neu beginnen um in dem nächsten Testprojekt es zu verbessern... und daraus zu lernen.

hier könnte deine Signatur stehen!

16.807 Beiträge seit 2008
vor 4 Jahren

Mit dem Abspeichern/laden aus einer sicheren Datenquelle heraus beschäftige ich mich an einem anderen Punkt.

Ich kann Dir an der Stelle nur raten: mach Dein Konzept bevor Du die erste Code-Zeile schreibst.
Wenn Du solche wichtigen Dinge - wie die Datenquelle - erst später überhaupt mal konzeptionell einbeziehst ist das Risiko sehr groß, dass Du sehr sehr sehr viel Quellcode neu schreiben darfst.
Konzeptionslos Software anzugehen ist nie eine gute Idee 😃

S
Shayliar Themenstarter:in
20 Beiträge seit 2019
vor 4 Jahren

Ja vielen Dank für den Hinweis.
Ich habe es bisher halt immer so gehalten,
das ich für jede Lerneinheit , die ich machen muss und will (vor allem muss bei meinem Stand) mit ein "Projekt" ausdenke was ich aus meiner Praxis als Anwender vermisse oder gebrauchen könnte und widme mich innerhalb des Projekts nur einem Problem.. und andere Dinge übernehme ich aus dem was ich bisher habe, um mich in den Mengen an zu erlangenden Wissen nicht verzettel.

Daher auch die XML Dateneinlesung, nicht weil ich es für das beste halte, sondern das in anderen Projekten als Basis mir erarbeitet habe, und das am flüssigsten kann. (da habe ich z.b. ein anderen Projekt, wo es eben genau darum geht, welche Datenspeicherung, wofür ist was sinnvoll etc.)

Hinweis von Abt vor 4 Jahren

Bitte keine Full Quotes
[Hinweis] Wie poste ich richtig?

hier könnte deine Signatur stehen!