MainForm bleibt im Hintergrund zur zweiten geöffneten Form mit Show.

Fridulin

Erfahrenes Mitglied
Hallo,

ich habe folgendes Problem. Ich habe eine MainForm im Programm, welche eine andere Form mit Show öffnet. Nun ist allerdings sobald beide Formen offen sind kann ich die MainForm nicht in den Vordergrund schieben, sie geht zwar vor allen anderen Programmen, aber bleibt immer hinter der zweiten Form.
Es ist auch so wenn die zweite Form aktualisiert wird, soll sie mit this.Activate(); und this.Focus(); dem Benutzer mitteilen, daß diese geändert wurde. Stattdessen sagt das Programm aber die Mainform wurde geändert und blinkt auch unten in der Task leiste. Sobald ich dann auf der Mainform in der Task leiste klicke, öffnet sich stattdessen die zweite Form.

Weiß einer Rat bzw. woran das liegt und wie man das ändern kann. Ich möchte gerne das die beiden Formen sich unabhängig voneinander verhalten.

Viele Grüße und ich wünsche noch einen schönen Abend
Fridulin
 
Hi

Sicher, das du Form.Show() aufrufst?
Das klingt für mich eher nach Show(IWin32Window) oder ShowDialog().
Zeig doch mal deinen Code, vielleicht lässt sich dann das Problem lösen.
 
Hallo,

vielen Dank für die Antwort.
Also ich deklariere die Form Global. Da ich mehrmals an der Form von der MainForm etwas hinzufügen muß.
Code:
// Global
user_form user_formcha;

Dann Prüfe ich in ein Hash mit Contain ob sie bereits geöffnet ist und wenn nicht öffne ich Sie, andernfalls füge ich Ihr nur etwas hinzu bzw. Aktualisiere sie.

Code:
user_formcha = new user_form(this);
user_formcha.Text = wem;
meldung  = meldung.Substring(10);
user_formcha.Show(this);

Danach Füge ich der Form etwas hinzu und Aktualisiere sie.

Code:
user_formcha.Nachricht = meldung;
user_formcha.Wem = wem;
user_formcha.aktualisieren();

Viele Grüße
Fridulin
 
Hallo,

leider bin ich immer noch nicht auf die Lösung gekommen. Wie man sieht aktualisiert die MainForm die zweite Form. Kann es sein das die zweite Form dann automatisch im Vordergrund bleibt?

Viele Grüße und über jede Hilfe wäre ich sehr Dankbar.
Fridulin
 
Hi,

wie Nico schon schrieb: Dadurch, dass du Form.Show(IWin32Window) verwendest, bleibt das Form im Vordergrund.

Verwende entweder ShowDialog() um das Form modal zu öffnen, oder verwende Show() ohne Parameter. Dann wird das neue Formular nicht weiter im Vordergrund dargestellt, wenn du z.B. das MainForm den Fokus erhält.

Wenn du eine Referenz auf das MainForm im neuen Form benötigt, dann erweitere den Konstruktor und gebe das MainForm mit.
 
Hallo,

vielen Dank für die Antwort.

Also ist „user_formcha.Show(this)“, das gleiche wie „user_formcha.Show(IWin32Window)“? Das wußte ich nicht. Ich dachte er braucht das wegen „user_formcha = new user_form(this)“ benötigt er das „this“ auch in Show.

Ich habe es gleich mal getestet und siehe da es Funktioniert. Vielen Dank.

Viele Grüße und ich wünsche noch einen schönen Tag.
Fridulin
 
Es ist das Gleiche gemeint. Damit hat Nico und dementsprechend ich gezielt auf diese Überladung der Show-Methode aufmerksam machen wollen.
 
Hallo,

achso ok, ja jetzt im Nachhinein habe ich das verstanden und es ergibt für mich Sinn. Nur ich bin da zu den Zeitpunkt nicht drauf gekommen, da mir, wie gesagt, nicht klar war das, das gleiche gemeint war.

Viele Grüße
Fridulin
 
Zurück