myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Speichefrage beim Verlassen von Dropdowns & mehreren Labels Test in Schleide zuweisen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

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

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Shayliar Shayliar ist männlich
myCSharp.de-Mitglied

Dabei seit: 30.03.2019
Beiträge: 16
Entwicklungsumgebung: Visual Studio 2017
Herkunft: Düsseldorf


Shayliar ist offline Füge Shayliar Deiner Kontaktliste hinzu

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

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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

Shayliar hat dieses Bild (verkleinerte Version) angehängt:
csharp.jpg
Volle Bildgröße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Shayliar am 15.01.2020 22:22.

15.01.2020 22:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Stefan.Haegele Stefan.Haegele ist männlich
myCSharp.de-Mitglied

avatar-3068.jpg


Dabei seit: 13.03.2009
Beiträge: 371
Entwicklungsumgebung: Visual Studio 2010 Ultimat
Herkunft: Untermeitingen


Stefan.Haegele ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
16.01.2020 07:58 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Coffeebean Coffeebean ist männlich
myCSharp.de-Team

avatar-3295.gif


Dabei seit: 25.08.2011
Beiträge: 2.195
Entwicklungsumgebung: VS 2005-2017, VS Code
Herkunft: Deutschland/Schweiz


Coffeebean ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
16.01.2020 13:10 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.304
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Shayliar:
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?
16.01.2020 17:30 Beiträge des Benutzers | zu Buddylist hinzufügen
Shayliar Shayliar ist männlich
myCSharp.de-Mitglied

Dabei seit: 30.03.2019
Beiträge: 16
Entwicklungsumgebung: Visual Studio 2017
Herkunft: Düsseldorf

Themenstarter Thema begonnen von Shayliar

Shayliar ist offline Füge Shayliar Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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)

Zitat:
- Ä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.

Zitat:
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.
18.01.2020 12:45 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.478
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top



Zitat von Shayliar:
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 :-)
18.01.2020 14:08 Beiträge des Benutzers | zu Buddylist hinzufügen
Shayliar Shayliar ist männlich
myCSharp.de-Mitglied

Dabei seit: 30.03.2019
Beiträge: 16
Entwicklungsumgebung: Visual Studio 2017
Herkunft: Düsseldorf

Themenstarter Thema begonnen von Shayliar

Shayliar ist offline Füge Shayliar Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.)


mycsharp.de  Moderationshinweis von Abt (18.01.2020 19:20):

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

 
18.01.2020 19:13 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 29.02.2020 09:54