Laden...

Hauptformular (Owner) in Vordergrund holen

Erstellt von vstw vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.539 Views
V
vstw Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren
Hauptformular (Owner) in Vordergrund holen

Hallo,

ich bin geade dabei mir die Basisstruktur einer Anwendung zusammenzustellen:

  • Von einem Menü und parallel dazu per Icons sollen
  • verschiedene Fenster aufgerufen werden können
  • jedes aber nur 1x
  • egal wieviele angezeigt werden, alle Fenster und das Hauptfenster sollen bedienbar sein
  • die Einzelfenster sollen unabhängig voneinander geschlossen werden können
  • das Hauptfenster soll alle schließen

Gelöst habe ich das folgendermaßen:

  • die Fenster werden aus dem Hauptformular mit Show() aufgerufen
  • dabei wird der Menüpunkt und der Icon-Button auf enabled=false gesetzt
  • das Closed-Event des Fensters gibt Menüpunkt und Button wieder frei

Die erste Schwierigkeit war: Menüpunkte und Buttons verhalten sich unterschiedlich! Bei Klick auf Menüpunkt bekommt das Hauptfenster kurzzeitig den Fokus, das Unterfenster öffnet sich und bekommt den Fokus. Beim Klick auf den Button geht das nur beim 1. Mal so, da das Hauptfenster den Fokus hat. Danach bekommt beim Klick auf den Button das Hauptfenster nur den Fokus, sonst nichts. Erst ein 2. Klick öffnet das Unterfenster und gibt dem den Fokus.

Lösung: jeden Fenster bekommt übder das MouseEnter-Event automatisch den Fokus.

Restproblem fürs Forum hier - habe ich so nirgends gefunden:

Zwar ist das Hauptfenster bedienbar, aber es liegt hinter allen Unterfenstern! Wenn alle klein genug sind kann ich sie nebeneinander anordnen. Sind die Fenster größer und verdecken sich gegenseitig mehr oder weniger, hätte ich gerne auch das Hauptfenster mal vorne. Das geht aber nicht!

Habe schon TopMost und SetForegroundWindow probiert - wirkungslos!

Falls jemand meine Anwendung verstehen will - EXE (VS 2010 für .NET 4) liegt als ZIP bei
http://www.sternwarte-wuerzburg.de/unused/TestApp2.zip
(und hinterlässt in user<user>\AppData\Local\Microsoft\TestApp2... eine Einstellungsdatei)

Eine mögliche Lösung sollte aber nur jedes der Fenster in den Vordergrund bringen können, ohne die Owner-Eigenschaften zu ändern, d.h. Schließen des Hauptfensters soll nach wie vor die ganze Anwendung schließen.

Bin für jeden Tipp dankbar!

Josef

T
94 Beiträge seit 2007
vor 12 Jahren

Vielleicht solltest du MDI als Lösung in Betracht ziehen. Unter MDI-Testanwendung gibt es eine Testanwendung, die du dir anschauen kannst.

V
vstw Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren

danke, tabstop,

aber MDI kommt für mich nicht (oder nur im Notfall) in Betracht, es würde ja alles in diesem unschönen Container ablaufen. Da würde ich noch eher das Hauptfenster auf Menü und Toolstrip beschränken und den Rest als 2. Fenster drunter aufmachen. Das ist dann gleichberechtigt wie die anderen.

Wäre schön wenn es eine Lösung gäbe. Aber ich habe mir grade mal andere Anwendungen angesehen, speziell GIMP: da ist es genauso, alle Werkzeugfenster liegen vor dem Hauptfenster, in dem das Bild editiert wird, dieses kann man nicht in den Vordergrund holen. Ist diese Möglichkeit wirklich nicht vorgesehen?