Hallo!
Ich möchte gerne mein Form sperren, wenn ich einen Thread gestartet habe und nur einen Button freischalten, den der Benutzer drücken kann (zum abbrechen).
Ich dachte mir nun, dies folgendermaßen zu tun:
Alle Maus-Click Events abfangen und wenn der Thread läuft, nur diese Zulassen/Weitergeben, welche auf den einen Button zielen.
Erstes Problem ist, dass der Click-Event nur auf der leeren Form-Fläche weitergegeben wird und nicht, wenn ich z.B. auf ein Edit-Feld drücke.
Hat jemand eine Idee, wie ich mein Ziel am elegantesten erreiche?
Vielen Dank
Christof
Hallo christof.k,
mach einen foreach-loop durch this.Controls und hänge eine eigene Funktion an den Control.Click-Event. So hast du deine Funktion auch auf Buttons, Textboxen usw.
Zu der Thread-Sache: In der Event-Funktion einfach
if(myThread != null && myThread.IsAlive)
Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de
Hi!
Warum machst du es so kompliziert,
Liste erstellender Weg ist doch ganz einfach 🙂
Sowas habe ich folgendermaßen gelöst: Wenn der Thread gestartet wird, setzt du bei allen Controls, mit denen der Benutzer nicht mehr interagieren soll, Control.Enabled = false!
Nun gibt es 2 Möglichkeiten:
*wenn Thread beendet wird, Ausgangszustand wiederherstellen
Interaktionen zwischen den Threads kannst du gut über eigene Events realisieren.
Viel Erfolg! 🙂
Der Marcel
:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]
Hi!
Ich wollte nicht manuell alle Controls per Enabled ausschalten, da es viel Arbeit ist (OK, es sind nur 20, aber immerhin). Ich dachte so ein zentraler Mechanismus erspart mir die Arbeit und ist wartungsarm, da ich mich nicht um Änderung in den Controls kümmern muss (wenn welche Wegfallen oder hinzukommen)...
Dieses iterieren durch alle Controls muss ich mir mal anschauen. Klingt nach dem, was dem entgegen kommt...
Vielen Dank schonmal
Christof
Wieso viel aufwand?
Entweder du machst einen foreach durch this.Controls oder Benutzt eine GroupBox oder einen Panel und setzt diesen dann auf enabled = false
Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de
Hi christof.k!
Original von christof.k
Alle Maus-Click Events abfangen und wenn der Thread läuft, nur diese Zulassen/Weitergeben, welche auf den einen Button zielen.
Das ist viel Aufwand 😉
der Marcel
:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]
Ich weiß es nicht genau, aber was ist wenn du deine Buttons in ein Panel packst und das dann auf Enabled = false setzt, voraus gesetzt es sind immer die selben Buttons die gesperrt werden müssen.
Bis Dann
Markus