Laden...

Klick auf Button soll Aktion auslösen, auch wenn das Form vorher nicht aktiv ist

Erstellt von j3$u5 vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.742 Views
j
j3$u5 Themenstarter:in
24 Beiträge seit 2009
vor 11 Jahren
Klick auf Button soll Aktion auslösen, auch wenn das Form vorher nicht aktiv ist

Hallo Gemeinde,

ich habe eine Windows Forms Anwendung und möchte ihr ein änliches Verhalten verpassen wie z.B. dem Windows Explorer.
d.h.

Das Form hat keinen Focus.
Ich klicke auf einen Button oder ein ToolStripMenueItem oder auch auf einen ColumnHeader in einer Listview.

Im Explorer bekommt das Form den Focus und das Control wird "geklickt".
In meinem Prgoramm bekommt das Form den Focus aber ich muss nochmal klicken um das Click-Event des Controls auszulösen.

Die Frage ist nun also wie kann ich dieses Verhalten ändern?

Ich habe mir überlegt das Activated Event des Forms abzufangen und dann die Position des Mauszeigers zu ermitteln.
Die Idee habe allerdings wieder verworfen denn dann würde auch ein Click ausgelöst wenn man zb mit ALT+TAB in das Fenster wechselt oder es von der Task-Leiste wiederherstellt.

Ich hoffe auf Vorschläge oder noch besser Lösungen 😉

Vielen Dank für Euere Hilfe.

Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

c
2.120 Beiträge seit 2010
vor 11 Jahren

Das hat mich auch schon oft genervt. Man meint man klickt, weil das Fenster sichtbar ist und dabei hat es den Fokus nicht.
Andrerseits wärs auch andersrum der Fall. Man will nur das Fenster durch Klick irgendwohin in den Vordergrund holen und löst dabei aber schon eine Aktion aus. Wär auch nicht so wünschenswert.
Von daher würd ich mir überlegen ob du dieses Verhalten wirklich mit allen Konsequenzen und der Abweichung vom gewohnten Verhalten ändern möchtest.

j
j3$u5 Themenstarter:in
24 Beiträge seit 2009
vor 11 Jahren

Danke für deine Antowort chilic

ich bin mir der Konsequenzen bewusst und möchte dieses Verhalten dennoch erreichen

Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo j3$u5,

ich habe es gerade ausprobiert: Neues Form erstellen, Button drauf, Click-EventHandler hinzufügen, starten, anderes Fenster aktivieren, auf Button klicken ==> Aktion wird sofort ausgeführt. Zugegen, ich habe Windows 2000. 😃 Aber das spricht für Betriebssystemverhalten/-einstellung.

herbivore

t
156 Beiträge seit 2012
vor 11 Jahren

Hallo j3$u5,

habe es auch mit einem eigenen Programm unter Windows 7 versucht und den Fokus auf ein anderes programm gesetzt. Beim Click auf ein Control wurde das Click-Event direkt ausgeführt.

Welches System hast Du denn?

Gruß, Karl

j
j3$u5 Themenstarter:in
24 Beiträge seit 2009
vor 11 Jahren

Hallo und danke für Eure Antworten,

ich benutze Win7 Prof. läuft auf meiner Kiste

das kann ich nun überhaupt nicht verstehen....

ich hab es mit den Einstellungen "Für optimale Anzeige" und für "optimale Leistung" ausprobiert und habe imme das selbe Ergebnis

Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

b
357 Beiträge seit 2010
vor 11 Jahren

Auch Win7 Prof hier, selbes Vorgehen wie herbivore beschrieben hat - funktioniert wunderbar.

j
j3$u5 Themenstarter:in
24 Beiträge seit 2009
vor 11 Jahren

Hallo,

nach ausgibiegem Testen bin ich zu vollgendem Schluss gekommen:

Steuerelemente wie Listview, Button, Combobox usw. sind direkt zugreifbar
Steuerelemente wie MenuStrip oder ToolStrip sind dies nicht

Lösung:

Man Impementiert den MouseEnter EventHandler und gibt in diesem dem jeweiligen Steuerelement durch aufrufen der Methode Focus() den Focus. Das andere Geöffnete Form verliert dadurch seinen Focus nicht aber beim ersten Click auf eines der obgen genannten Steuerelmente wird die gewünschte Aktion sofort ausgeführt.

Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)