Laden...

Wie kann ich Buttons durch tiefer liegende Schichten erzeugen?

Erstellt von hlag vor 3 Jahren Letzter Beitrag vor 3 Jahren 726 Views
H
hlag Themenstarter:in
8 Beiträge seit 2013
vor 3 Jahren
Wie kann ich Buttons durch tiefer liegende Schichten erzeugen?

Hallo Leute,

hier wieder eine dumme Frage. So dumm, dass ich nicht weiß, wie ich da gezielt bei Google suchen muss.

Ich habe eine Windows-Forms-Oberfläche. Diese ist recht trivial, da gibts nur ein paar wenige Buttons.

Jetzt möchte ich aber einige Buttons von der Software erstellen lassen. Präzise: ich baue eine Steuerung für eine Modellbahn. Diese hat Weichen.

Die Weichen sind Objekte mit dem Status geradeaus oder Abzweig.
Die Anzahl Weichen liest sich die Software aus einer Konfigurationsdatei ein, ebenso die Adressen, unter denen diese erreichbar sind.

Jetzt soll für jede Weiche ein Button auf der oberfläche sein: rot für abzweig, grün für geradeaus.
Klickt man drauf, ändert sich die Farbe und die Weiche schaltet sich um

Hab das soweit dann tatsächlich hinbekommen: ich habe die Oberfläche als Referenz an meine Application weitergegeben, von dort an jede einzelne Weiche, dann in der Klasse Weiche Buttons erstellt, die ich über Controls.Add auf die Oberfläche gemalt habe.

Tuts. Scheint mir aber ein unsauberer Weg zu sein. Bei php und Javascript würde ich Leute erschlagen, die grafische Anweisungen im logischen Teil unterbringen....

Gibts da ne Best Practise? Irgendein Buch oder eine Webseite, die ich zum Thema mal durcharbeiten soll?

Wonach kann ich da sinnvollerweise suchen?

(Mein Problem ist, dass ich Autodidakt bin und bei verschiedenen Dingen, selbst wenn ich sie gelöst habe, unter Umständen den Fachbegriff dafür nicht weiß. Und bei irgendwelchen Tutorials stoße ich schnell an die ein oder andere Grenze - Grenze eins: nein, ich brauche keine Erklärung für Objekte, Verweise und Werte-Typen. Die Basics sind mor geläufig. Grenze zwei: wenn ich die Syntax der Beispiele nicht mal mehr verstehe... Irgendwie suche ich noch das Buch "C# für Leute, die nur so doof wie Klaus sind..." )

Auch die schönste Frau
ist an den Füßen
zu Ende.

5.658 Beiträge seit 2006
vor 3 Jahren

Dein Gedankengang ist intuitiv richtig. Die Begriffe dafür sind u.a. Schichtentrennung, Separation of concerns (SoC), MVVM (bei WPF) oder MVC (bei WinForms).

Bei allen diesen Architektur- und Design-Entscheidungen verfolgt man als Ziel, modularen und wiederverwendbaren Code zu schreiben, der möglichst unabhängig von anderem Code getestet, gewartet und weiterentwickelt werden kann.

Blogs, Bücher und Videos zum Thema findest du unter den Schlagworten "software architecture" oder "design patterns".

Weeks of programming can save you hours of planning

4.938 Beiträge seit 2008
vor 3 Jahren

Hallo hlag,

der sinnvollste Weg ist hierbei die Verwendung von Ereignissen: [FAQ] Eigenen Event definieren / Information zu Events (Ereignis/Ereignisse) (wie es auch in [FAQ] Kommunikation von 2 Forms vorgeschlagen/verwendet wird).

Du informierst von der Logik-Klasse aus die UI (d.h. diese abonniert sich dann auf das Ereignis) und die UI erstellt dann aus den übergebenen Informationen (dafür dann eine eigene EventArgs-Klasse erzeugen) die passenden Controls.