Hallo zusammen,
zur Anzeige von Benachrichtigungen möchte ich gerne eine Form im Vordergrund anzeigen ohne das diese den Focus erhält und von anderen Fenstern überdeckt wird.
Beispiel
Jemand schreibt in Word einen Text. Das Benachrichtigungsfenster öffnet sich oben links. Derjenige sieht die Benachrichtigung, kann jedoch ohne Probleme seinen Text weiterschreiben.
TopLevel und TopMost habe ich schon probiert, diese brachten aber nicht den gewünschten Effekt.
Kann mir eventuell jemand einen Tipp geben?
LG janSharp
Hallo
TopMost ist schon das richtige. Ein TopMost-Form muss nicht aktiv sein und muss den Fokus nicht besitzen. Es ist ja gerade der Clou, dass es im Vordergrund bleibt, auch wenn es nicht mehr aktiv ist / den Focus nicht mehr hat.
Der Tick ist also, zu verhindern, dass das Form aktiv wird bzw. den Focus sofort wieder zurückzusetzen, siehe z.B. Aus Form neues Form öffnen, aber Focus behalten.( Ich will nicht ausschließen, dass es bessere Lösungen gibt. Diese habe ich innerhalb von einer Minute gefunden. [EDIT]Hier noch eine Form anzeigen ohne Focus[/EDIT]
herbivore
Hey herbivore,
vielen Dank für die Antwort. Irgendwie war ich heute Morgen wohl noch in geistiger Umnachtung. Das Problem ist das TopLevel als auch TopMost es nicht schaffen das Fenster immer im Vordergrund anzuzeigen.
Hintergrund
Ich entwickle grade ein Outlook Plugin welches bei einkommenden E-Mails ein Fenster mit einigen Zusatzinformationen anzeigen soll. Das doofe ist nur das dieses Fenster immer im Hintergrund eingeblendet wird und somit für den Benutzer nicht sichtbar ist.
LG janSharp
Hallo janSharp,
TopLevel ist dazu da, dass man ein Fenster in einem anderen Fenster anzeigen kann. Darum geht es hier nicht.
TopMost sollte dafür sorgen, dass das betreffenden Fenster immer im Vordergrund ist. Das sollte eigentlich funktionieren. Wenn das bei dir nicht klappt, ist schwer zu sagen, warum.
herbivore
Zitat aus MSDN Form.TopMost:
Das oberste Formular ist ein Formular, das alle anderen (nicht obersten) Formulare überlagert, auch wenn es nicht das aktive Formular oder das Vordergrundformular ist. Oberste Formulare werden immer an oberster Stelle in der z-Reihenfolge der Fenster auf dem Desktop angezeigt. Mit dieser Eigenschaft können Sie ein Formular erstellen, das in der Anwendung immer angezeigt wird, beispielsweise ein Toolfenster zum Suchen und Ersetzen.
Mir fallen folgende Möglichkeiten ein:
Bei der Ausführung in der Entwicklungsumgebung rutscht dann das Fenster in den Hintergrund, wenn ich es durch ein anderes Fenster, z. B. dem Internet Explorer verdecke. Diesen Effekt habe ich nicht erwartet und ist für mich aus der MSDN Doku nicht ersichtlich.
Bei mir bleibt das Fenster im Vordergrund, wenn ich stattdessen das Kompilat ausführe und es durch ein anderes Fenster, z. B. dem Internet Explorer verdecken will. So soll es sein.
Das Verhalten mit der Entwicklungsumgebung ist ein Hinweis für mich, dass es auch andere Konstellationen geben könnte, wo z.B. TopMost nicht global funktioniert, sondern lokal innerhalb der Anwendung beschränkt ist. Dies ist reine Vermutung.
Dein Outlook ist ebenfalls TopMost.
Hi janSharp,
google mal nach Toast Notification, das mach eigentlich was du willst. Und Beispiele gibt es da massig.
MFG
Björn
Sollte man mal gelesen haben:
@herbivore @CoLo
Vielen Dank für eure Antworten 😄 Dann geht das vielleicht erst einmal nicht so wie wir uns das vorstellen. Ist zwar sehr schade, kann man aber nichts machen.
@Palin
Danke für den Tipp mit den Toast Notifications. Die Idee war nur grade diese zu umgehen, da diese in unserer Citrix Umgebung zurzeit nicht funktionieren und die Mitarbeiter somit nicht über eingehende E-Mails informiert werden.
Hallo,
ich weiss nicht ob das eine gute Idee ist oder überhaupt möglich ist aber du könntest ja mittels
WinAPI das Fenster mit dem aktuellen Fokus ermitteln, deine Anwendung zum Child dieses Fenster
machen und dann in einer Ecke dein Notification-Fenster einblenden.
MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden!
*"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht."
*"Ignorance simplifies ANY problem."
*"Stoppt die Piraterie der Musikindustrie"
Hi janSharp,
wenn Du eine MyFormTopMost.exe erstellst, ist diese dann im Vordergrund?
Wenn ja, dann kannst Du ja über Dein Plugin die exe aufrufen (z.B. mit Argumenten) und diese Deine Daten schicken.
Könnte sein, dass evtl. Outlook hier auch noch an den Fenstern rumfummelt. Beispielsweise habe ich bei mir furchtbare Schriftdarstellung (ohne Antialiasing). Vielleicht müsste man Outlook-seitig noch was einstellen, aber mir fehlt schlicht die Erfahrung damit.
@janSharp
Du sollst ja auch nicht die Toast Notification verwenden sondern dir den Quellcode in den Beispielen anschauen. Damit solltest du zu mindesten auf einen Windows Pc eine funktionierende Lösung hin bekommen.
Wenn es da ein grundlegendes Problem mit der Citrix Umgebung gibt, kann es sein das die Lösung dort auch nicht funktioniert. Dann solltest du aber mal schauen woran es bei der Citrix Umgebung scheitert.
Sollte man mal gelesen haben: