Laden...

Uhrzeitabhängiges Aufrufen von Forms

Erstellt von mdonner vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.497 Views
M
mdonner Themenstarter:in
5 Beiträge seit 2017
vor 6 Jahren
Uhrzeitabhängiges Aufrufen von Forms

Hallo zusammen,

Ich habe folgende Herausforderung zu bewältigen. Ich muss abhängig von der Uhrzeit zwischen zwei Forms schalten können. Bedeutet: zwischen 08:00 - 16:00 Uhr wird das eine Form angezeigt, außerhalb dieser Zeit soll ein zweites Form angezeigt werden.

Derzeit arbeite ich mit Timern und if/else Schleifen was aber nicht optimal funktioniert und ich hoffe hier auf ein paar gute Ideen wie man das noch realisieren könnte.

Hier der Ablauf in Kürze:

Main form hat button der abhängig vom Ausgang der Prüfung das eine oder andere Form startet. Was mir fehlt ist eine Logik (Timer?) der dann zum Schaltzeitpunkt das offene Form schließt und abhängig davon das andere Form öffnet.

Danke vorab für eure Ideen!

LG,
Matthias

if(question == "stupid") {answer = "it really depends";} else {answer = "it really depends";}

P
441 Beiträge seit 2014
vor 6 Jahren

Ein Timer ist schon genau das, was du dafür brauchst.
Beim Aufruf des Form musst du diesen instanziieren und berechnen wie lange er laufen soll (angepeilte Uhrzeit - jetzt). Beim Ablauf öffnest du dann das andere Form.

Übrigens: if und else sind keine Schleifen; for und while oder foreach sind schleifen.

M
mdonner Themenstarter:in
5 Beiträge seit 2017
vor 6 Jahren

Hallo,

Danke für die Antwort und natürlich hast du Recht das if/else KEINE Schleife ist lach - sowas passiert wenn der Nachwuchs um einen rumhüpft 😃

Okay, das mit dem "Laufzeit berechnen" ist vielleicht eine gute Alternative zum "permanenten prüfen zur Laufzeit" ... aber wenn diese Laufzeit dann beendet ist würde sich dieses Form ja schließen. Und wie öffne ich dann das andere? (als Close-Event aufrufen und dort die dann gültige Laufzeit mitgeben?)

Dann würde das erst mal funktionieren denke ich. Aber irgendwie ist mir das auch noch nicht ganz das richtige .... leider kann ich nicht mal sagen was mir daran "nicht gefällt" ....

if(question == "stupid") {answer = "it really depends";} else {answer = "it really depends";}

P
441 Beiträge seit 2014
vor 6 Jahren

Die Möglichkeiten sind da so groß wie du sie dir vorstellen kannst.

Du könntest das auch über eine überliegende Instanz managen, die sich um den Timer kümmert und dann das Form schließt.
Alternativ kannst du beide Form's permanent geöffnet lassen und nur verstecken:
[FAQ] Kommunikation von 2 Forms
Oder aber jedes Form prüft seine Restlaufzeit selber und ruft dann das andere wieder auf.

Eine Kombination ist natürlich auch denkbar 😃

M
mdonner Themenstarter:in
5 Beiträge seit 2017
vor 6 Jahren

Ich habe es befürchtet - das ist das doofe (gute) beim Programmieren - VIELE Wege führen zum Erfolg 😃 Da lobe ich mit dir IT-Welt, Best Practice Guide und gut ist lach

Das mit den beiden Forms welche sich nur aktivieren fällt schon mal aus weil das Night sich nämlich Daten nachlädt und daher immer aufgerufen werden sollte damit ich dort nicht wieder Änderungen habe. Bleibt noch die "Überinstanz" ....

if(question == "stupid") {answer = "it really depends";} else {answer = "it really depends";}

P
441 Beiträge seit 2014
vor 6 Jahren

Um zu sagen, was die sauberste Lösung ist, bin ich wohl zuwenig mit WinForms unterwegs.
Das bei dir klingt aber, als würdest du die Forms zu mehr als zum anzeigen und manipulieren von Daten nehmen.

Vielleicht hilft dir das einen Denkanstoß zu einem best-practice zu finden:
[Artikel] Drei-Schichten-Architektur
Nimmst du die Form nur zum anzeigen und erledigst das nachladen zeit- oder event-gesteuert in der richtigen Schicht, ist es alles etwas schöner.

16.842 Beiträge seit 2008
vor 6 Jahren

Da lobe ich mit dir IT-Welt, Best Practice Guide und gut ist

Nö, die IT Welt ist hier nicht anders (übrigens der Hausbau und das Bäckereihandwerk auch nicht 😉).
In beiden Welten gibt es Best Practises genauso wie spezifische Lösungen für gewisse Umgebungen und Situationen.

M
mdonner Themenstarter:in
5 Beiträge seit 2017
vor 6 Jahren

Sagen wir es mal so, das ist alles ein wenig historisch gewachsen und ich mache derzeit nach dem hinzufügen von Features einen Code-Review. Ich möchte aber vom Aufwand her überschaubar bleiben daher wird nicht alles angefasst was man bestimmt optimieren könnte. Ich habe einen Teil der Anwendung bereits von Winforms auf WPF umgestellt, das war schon ein ziemlicher (aber ereforderlicher) Akt 😃

Ich glaube ich versuche mich mal mit den Instanzierungen, das scheint mir gerade das kleinste Übel zum erreichen des Ziels 😃

Sollte jemand anderes noch einen Königsweg haben der hier noch nicht angesprochen wurde, gerne her damit.

@Papst - Danke für deine Mühe, Zeit und die guten Antworten!

if(question == "stupid") {answer = "it really depends";} else {answer = "it really depends";}

16.842 Beiträge seit 2008
vor 6 Jahren

WinForms auf WPF erfordert immer eine Migration.
Wenn Du es halbherzig machst dann steigt die Gefahr, dass das natürlich eine Verschlimmerbesserung wird. WPF hat ein ganz anderes Paradigma als WinForms.

M
mdonner Themenstarter:in
5 Beiträge seit 2017
vor 6 Jahren

Danke dir für den Tipp! Dann wartet da wohl eine Menge Arbeit auf mich ....

if(question == "stupid") {answer = "it really depends";} else {answer = "it really depends";}