Entwickler-Ecke

WinForms - Probleme mit Wizard Controls


haschme - Mi 25.05.16 11:33
Titel: Probleme mit Wizard Controls
Hallo zusammen,

ich habe eine Software für eine WinForm geschrieben, die bis jetzt fehlerlos funktionierte.
Nachdem der Code fertig war entschied ich mich aber, das ganze in einem Wizard darzustellen.

Da ich das Rad nicht neu erfinden wollte habe ich mich auf die Suche nach existierenden Controls begeben.

Dabei habe ich zunächst 2 Controls ausprobiert: http://aerowizard.codeplex.com/ und http://www.codeproject.com/Articles/10808/Cristi-Potlog-s-Wizard-Control-for-NET?fid=193298&fr=51#xx0xx

Schöner finde ich den AeroWizard.
Bei beiden Wizards habe ich jedoch das Problem, dass nach Vollendung des Algorithmus die Form automatisch geschlossen wird.

In meinem Code wird vor den Berechnungen ein Thread gestartet. Kann es vielleicht sein, dass der Wizard ebenfalls einen Thread ausführt, welcher meinem Thread in die Quere kommt?

Ich hoffe mir kann jemand helfen.

Vielen Dank!


Ralf Jansen - Mi 25.05.16 13:57

Welcher Algorithmus, wann wird der aufgerufen, wie hängt der mit dem Wizard zusammen und was ist der Fehler?


haschme - Mi 25.05.16 15:38

Der Algorithmus ist völlig unabhängig von der Form bzw vom Wizard.

Der einzige Zusammenhang entsteht durch das vom Wizard ausgelöste Event: Finished
Dieses Event wird dann ausgelöst sobald der User auf der letzten Seite des Wizards ist und auf den Button Finish klickt.

Wenn das Event ausgelöst wird starte ich einen Thread in dem mein Algorithmus startet.

Leider schließt sich das Programm automatisch während des Vorgangs. Dies geschieht aber erst seit ich das Wizard Control eingebaut habe.
Vorher unter einer normalen WinForm lief alles normal durch.

Es sieht so aus, als würde das Event des Wizard´s einfach meine Form schließen. Ich verstehe allerdings nicht warum. Eine Fehlermeldung entsteht nicht.


Th69 - Mi 25.05.16 17:17

Hallo,

ist das Wizard-Control auf der Hauptform drauf (d.h. welches du per Application.Run(...] gestartet hast)?
Dann ist klar, daß bei Beendigung der Form sich auch das ganze Programm beendet.

Du mußt entweder die Form selbst weiter geöffnet lassen oder aber per Application.Run() (d.h. ohne Parameter) oder sogar einen eigenen ApplicationContext dafür sorgen, daß das Programm weiterläuft.

Was soll denn visuell passieren, während dein Thread läuft?


Ralf Jansen - Mi 25.05.16 17:24

Wenn das sowieso nach dem Wizard passieren soll (finished heißt für mich danach) warum ist dann die Aufgabe überhaupt ein weitere Thread und wird nicht einfach danach so gestartet?

Wir müßen da ein wenig Code sehen um das wirklich zu durchschauen mir fallen da gerade ein halbes dutzend Stellschrauben ein (Application.Run, Forgroundthread vs. Backgroundthread, überhaupt Thread, Thread.Join, Synchronisierung etc. etc.) an denen man drehen könnte aber was genau bei dir das Richtige ist kann ich so aus'm lameng nicht sagen.