Laden...

[Gelöst] Form2 wird vor Form1 angezeigt / Form verliert Fokus nach OpenFileDialog

Erstellt von Patros46 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.527 Views
P
Patros46 Themenstarter:in
11 Beiträge seit 2009
vor 13 Jahren
[Gelöst] Form2 wird vor Form1 angezeigt / Form verliert Fokus nach OpenFileDialog

Hallo, ich habe zwei kleine Fragen, die ich auch nach Verwenden der Suchfunktion leider nicht habe beantworten können.

(1) Wie erreiche ich es, dass mein Hauptfenster zunächst gezeichnet wird und im Anschluss daran eine 2. Form geöffnet wird? Wenn ich die 2. Form im Load-Event der 1. Form öffne, so wird zunächst nur die 2. Form angezeichnet und erst danach die 1. Form gezeichnet.

(2) Des Weiteren habe ich folgendes Problem: Ich habe ein Hauptfenster, von diesem wird ein OpenFileDialog gestartet. Sendet dieser als DialogResult OK zurück, so öffnet sich eine 2. Form. Diese ist allerdings nicht fokussiert, was sich auch nicht durch die Dienste Focus, Activate oder ähnliches ändern lässt. Woran liegt das und wie behebe ich das Problem?

Danke im Voraus für eine Antwort.

MfG Patros46

157 Beiträge seit 2008
vor 13 Jahren

(1) Du rufst die zweite Form wohl mit ShowDialog() auf, wodurch du keinen neuen Thread startest. Das macht es den zwei Formen natürlich unmöglich, parallel zu funktionieren. Stattdessen benutzt du hier Show().

(2) Wenn du sie mit ShowDialog() aufrufst, muss sie eigentlich den Fokus haben.

Hinweis von herbivore vor 13 Jahren

@Patros46: Fürs nächste mal: Bitte immer nur ein Thema pro Thread! Siehe [Hinweis] Wie poste ich richtig? Punkt 1.2.

@bonzy: Nur zur Klarstellung: Auch bei Show wird kein neuer Thread erzeugt. Alle Fenster laufen immer immer in einem Thread (oder sollten das tun) und können trotzdem wunderbar parallel funktionieren. Dass bei ShowDialog nur das eine Fenster zu bedienen ist, bei Show aber beide, hat andere Gründe. Das hat nichts mit Threading zu tun.

H
116 Beiträge seit 2008
vor 13 Jahren

(1) Wie erreiche ich es, dass mein Hauptfenster zunächst gezeichnet wird und im Anschluss daran eine 2. Form geöffnet wird? Wenn ich die 2. Form im Load-Event der 1. Form öffne, so wird zunächst nur die 2. Form angezeichnet und erst danach die 1. Form gezeichnet.

Was logisch ist, da zu dem Zeitpunkt, wenn Form_Loaded geworfen wird, noch nichts angezeigt wird. Das ist erst passiert, wenn Form_Shown geworfen wurde (mit Einschränkungen).

Für den kontrollierten Aufbau zweier oder mehrerer (gleichberechtigter) Fenster solltest Du Dir mal ApplicationContext ansehen.

Hinrich

P
Patros46 Themenstarter:in
11 Beiträge seit 2009
vor 13 Jahren

Kleine Ergänzung zu (2):

Ich hab es nochmal getestet. Wenn ich den OpenFileDialog rausnehme, dann ist der Fokus bei meiner Form da, ist OpenFileDialog da, ist der Fokus weg.

Codebeispiel:


OpenFileDialog open = new OpenFileDialog();
if (open.ShowDialog() == DialogResult.OK)
{
FormNeu newform = new FormNeu();
if (newform.ShowDialog() == DialogResult.OK)
{
...
}
}

4.931 Beiträge seit 2008
vor 13 Jahren

Probiere mal


newform.ShowDialog(this)

d.h. den Owner explizit anzugeben.

Ansonsten schau mal welche Form bei Form.ActiveForm als derzeit aktive eingetragen ist.

4.221 Beiträge seit 2005
vor 13 Jahren

Hier habe ich mal beschrieben wieso so etwas passieren kann.
Was aber nicht heisst, dass es hier aus dem Grund passiert ist... aber es könnte 😃

Form verliert den Focus und springt in den Hintergrund...

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

P
Patros46 Themenstarter:in
11 Beiträge seit 2009
vor 13 Jahren

Probiere mal

  
newform.ShowDialog(this)  
  

d.h. den Owner explizit anzugeben.

Danke. Hat funktioniert. 😃