Laden...

Rechtsklick verhindern auf ein Fenster in der Taskbar?

Erstellt von zipperle vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.420 Views
Z
zipperle Themenstarter:in
47 Beiträge seit 2006
vor 16 Jahren
Rechtsklick verhindern auf ein Fenster in der Taskbar?

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.

49.485 Beiträge seit 2005
vor 16 Jahren

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

1.134 Beiträge seit 2004
vor 16 Jahren

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)

Z
zipperle Themenstarter:in
47 Beiträge seit 2006
vor 16 Jahren

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.

1.134 Beiträge seit 2004
vor 16 Jahren

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)

915 Beiträge seit 2006
vor 16 Jahren

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(