Hallo,
habe folgendes Problem. Ich habe eine Applikation, die bei einer bestimmten Benutzeraktion eine neue modale Form öffnet, die eine bestimmte Wartezeit geöffnet ist. um so Benutzereingaben für die Hauptapplikation zu unterbinden. Das funktioniert auch alles soweit. Die modale Form, ich nenn sie jetz mal Waitform besitzt zwei Timer. Ein Timer sorgt dafür die Waitform 60 Sekunden lang anzuzeigen und der zweite Timer stellt die bisher verstrichene Zeit, die bis jetzt gewartet wurde, d.h. z.b. 22s von 60s dar und wird natürlich jede Sekunde aktualisiert. Das funktioniert soweit alles einwandfrei.
Nun zum eigentlichen Problem, wenn ich nun während die Waitform geöffnet ist, einen rechtsklick auf deren Fenster in der Taskleiste mache oder einen Rechtsklick auf die Titelleiste der Waitform und das Kontextmenü so lang geöffnet lasse bis die 60 Sekunden abgelaufen sind, schließt sich die Waitform nicht, sondern zählt über die 60 Sekunden hinaus, d.h. es wird dann z.b. 65s von 60s angezeigt und zählt so lange weiter bis ich einen Klick mit der Maus auf irgendeine Fläche des Bildschirms mache.
Für das offen halten der verwende ich den System.Timers.Timer (habe aber auch schon den Threading.Timer verwendet ohne Erfolg), für die Sekundenanzeige verwende ich auch einen System.Tiimers.Timer(ebenfalls den Threading.Timer ausprobiert ohne erfolg).
Was ich ausschließen kann ist, dass es nicht am Focus liegt, die Waitform verliert zwar den Focus beim Rechtslick auf deren Fenster in der Taskleiste, aber bei einem Rechtsklick auf die Titelleiste der Waitform behält sie den Focus. Wie beschrieben tritt in beiden Fällen das Problem auf.
Vielen Dank schon mal.
Hallo zipperle,
warum hast du überhaupt zwei Timer? Ich würde nur einen verwenden. Wenn du zwei Timer nehmen willst, dann sollten beide System.Windows.Forms.Timer sein.
herbivore
Schließe mich der Frage von Herbivore an
Ansonsten kann ich dir den Tipp geben schau dir die WindowsMessages im WndProc mal an, vielleciht reicht es dort bestimmte messages zu unterbinden
Mein Stackoverflow Profil
Skype Name : Boas.Enkler (bitte einen hinweis in der Kontaktanfrage damit ich euch vom Spam unterscheiden kann)
danke für die raschen antworten. also das wurde bisher so von meinen kollegen implementiert. müsst ich mal ein kleines redesign überdenken.
habs jetz vorerst mal anders gelöst. ich entferne den rahmen der form mit borderstyle.none und mit ShowInTaskbar = false. werde aber auch nochmal den windows.forms.timer testen, hab ich noch nicht dran gedacht. unter den windowsMessages kann ich mir nichts genaus vorstellen, müsst ich mich mal einlesen.
wie gesagt schau dir mal die WndProc Methode an. Es müsste ja eine passende message geben. Wenn du diese unterbindest kann ich mir vorstellen dass du das Verhalten in deiner gewünschten Form bekommst
Mein Stackoverflow Profil
Skype Name : Boas.Enkler (bitte einen hinweis in der Kontaktanfrage damit ich euch vom Spam unterscheiden kann)
Hrm, ich würde das in etwa so gestallten.
Wie die DialogForm dann gestalltest (ContextMenu, Taskbar visible usw..) bleibt dir überlassen 🙂
/PS
Runterzählen des Warteintervalls dreh die Sache einfach für die Anzeige um.
Ich habe leider hochgezählt 1-2-3-4... statt 60-59-58... usw.
Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(