Laden...

CenterParent

Erstellt von alf468 vor 18 Jahren Letzter Beitrag vor 18 Jahren 8.129 Views
A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 18 Jahren
CenterParent

Ich möchte gerne meine Forum zentriert in einer anderen Forum anzeigen lassen.Dies dürfe normal doch mit

Form.StartPosition=FormStartPosition.CenterParent;

Nun wird die Form zwar in der anderen Forum angezeigt aber nicht zentriert. 🤔

I
1.739 Beiträge seit 2005
vor 18 Jahren

Handelt es sich um ein MDI-Child? Wenn ja hat FormStartPosition.CenterParent keine Auswirkung.

A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 18 Jahren

Ne es ist kein MDI-Child.Also in Form2 habe ich folgendes stehen:

public void parent(Control c)
{
     this.TopLevel = false;
     this.Parent = c;
     this.StartPosition = FormStartPosition.CenterParent;
}

Dazu die Standart einstellugen vom Form Designer.

In Form1 wird Form2 aufgerufen:

Form2 f= new Form2();
f.parent(this);
f.Visible=true;
49.485 Beiträge seit 2005
vor 18 Jahren

Hallo alf468,

bin mir nicht ganz sicher, aber müsste die StartPosition nicht schon im Konstruktor gesetzt werden, damit sie Wirkung zeigt?

herbivore

D
462 Beiträge seit 2005
vor 18 Jahren

Hallo alf!

Übergibst du beim Aufrufen des Dialoges (Show() bzw. ShowDialog()) das übergeordnete Fenster?

mfg

A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 18 Jahren

Also Form2 wird in Form1 angezeigt nur eben nicht zentriert.Das sieht so aus:

Ob ich StartPosition im Konstruktor übergebe spielt keine Rolle.Das übergeordnete Fenster übergebe ich auch. Also entweder ich verstehe den Sinn von CenterParent falsch oder ich mache was falsch 🤔 .

I
1.739 Beiträge seit 2005
vor 18 Jahren

f.parent(this);

Damit landet die Form im Controlcontainer der aufrufenden Form(ist ja schlimmer als MDI...)
Du kannst dein dynamisch erzeugtes Control mit Hilfe der Location positionieren.


      Form f = new Form2();
      f.TopLevel = false;
      f.Parent = this;
      f.Show();
      Point p= new Point(10,20);
      f.Location=p;

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo alf468,

in einem anderen Forum stand, dass CenterParent nur bei MDI-Anwendungen funktioniert.

Aber es ist ja auch ganz leicht die Zentrierungsposition selbst auszurechnen.

herbivore

A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 18 Jahren

Ich glaube ich erkläre mal an einem Beispiel worum es mir bei der ganzen Sache geht.Ich habe eine Login Form und beim klicken auf ein Button werden die eingegeben Daten per Socket an ein Server gesendet, der wiederum die Daten kontrolliert. Während diesem Vorgang will ich ein Fenster anzeigen lassen mit einem Label und einer ProgessBar.Das Statusfenster soll in das Loginfenster ganz überdecken und die ProgessBar +Label soll mittig angezeigt werden.

Aber es ist ja auch ganz leicht die Zentrierungsposition selbst auszurechnen.

Bei meinen Rechnungen klappte das nie X(

I
1.739 Beiträge seit 2005
vor 18 Jahren

In dem Fall würde ich die Form mit ShowDialog() 'normal' aufrufen.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo alf468,

warum zwei Forms machen und nicht einfach den Statusbar mit in das Login-Form packen?

herbivore

A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 18 Jahren

Original von herbivore
Hallo alf468,

warum zwei Forms machen und nicht einfach den Statusbar mit in das Login-Form packen?

herbivore

Es kommen ja noch viel mehr Forms dazu.Ausserdem passt dies am besten zu meiner Struktur der Klassen.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo alf468,

dann erzeuge die Statusanzeige in gleicher Größe und an der gleichen Stelle, wie das Login-Form und verstecke anschließend das Login-Form.

herbivore