2009-03-13 5 views
0

Ich fühle mich wie eine Kardinalsünde, indem ich frage, wie ich das machen soll, weil es in den meisten Fällen falsch und böse wäre. Aber ...Fokus in einer Win-Forms-App?

Ich habe eine Winforms-App, die auf den Systray minimiert, wenn nicht verwendet wird, ich möchte es Pop-up und das oberste Fenster, wenn es eine Nachricht von einem Server erhält.

Ich kann es erscheinen lassen, aber ich kann es nicht das oberste Fenster sein. (Einstellung oberste ändert es nicht, aber es macht es oberste, sobald es Fokus gewonnen hat)

Weiß jemand, wie man das macht ?, würde ich normalerweise nicht tun, aber ein Client hat um dieses Verhalten gebeten, damit ich haben, sie umzusetzen ... :(

+0

Keine der vorgeschlagenen Lösungen zu funktionieren scheint, ich habe Zuflucht aus einem Syspray notifyIcon eine Blase zu Pop-up. zumindest bekommt das die Aufmerksamkeit der Nutzer. –

Antwort

1

Wenn .Net ‚oberste‘, was nicht funktioniert, können Sie versuchen, diesen Service erhalten Sie direkt von den ‚SetWindowPos()‘ API von Windows. Siehe this Seite für Details.

1

Es gibt eine post um dieses Problem in Microsoft-Foren.

Normalerweise, wenn das Fenster in Ihrer App ist, ca Die BringToFront-Methode sollte den Zweck erfüllen.

So normale Reihenfolge der Operationen:

  1. make it visible
  2. Anruf BringToFront()
  3. Set es TopMost
+0

Das funktioniert nicht, wenn Ihre gesamte App minimiert ist, funktioniert es wahrscheinlich nur, wenn eines Ihrer eigenen Fenster gerade den Fokus hat. –