Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Form ohne Focus immer im Vordergrund anzeigen
janSharp
myCSharp.de - Member



Dabei seit:
Beiträge: 9
Herkunft: NRW

Themenstarter:

Form ohne Focus immer im Vordergrund anzeigen

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von janSharp am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
janSharp
myCSharp.de - Member



Dabei seit:
Beiträge: 9
Herkunft: NRW

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
CoLo
myCSharp.de - Member



Dabei seit:
Beiträge: 224

beantworten | zitieren | melden

Zitat aus MSDN Form.TopMost:
Zitat
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:

1. Ich habe eine Anwendung mit nur einer Form und die Form ist auf TopMost gesetzt.

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.

2. 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.

3. Dein Outlook ist ebenfalls TopMost.
private Nachricht | Beiträge des Benutzers
Palin
myCSharp.de - Member



Dabei seit:
Beiträge: 1.090

beantworten | zitieren | melden

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:

Clean Code Developer
Entwurfsmuster
Anti-Pattern
private Nachricht | Beiträge des Benutzers
janSharp
myCSharp.de - Member



Dabei seit:
Beiträge: 9
Herkunft: NRW

Themenstarter:

beantworten | zitieren | melden

@herbivore @CoLo
Vielen Dank für eure Antworten :D 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.
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 660
Herkunft: NRW

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
CoLo
myCSharp.de - Member



Dabei seit:
Beiträge: 224

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
syntagma
myCSharp.de - Member



Dabei seit:
Beiträge: 4

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von syntagma am .
private Nachricht | Beiträge des Benutzers
Palin
myCSharp.de - Member



Dabei seit:
Beiträge: 1.090

beantworten | zitieren | melden

@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:

Clean Code Developer
Entwurfsmuster
Anti-Pattern
private Nachricht | Beiträge des Benutzers