PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C# Form Visible Problem (Oder: Wie bekomme ich mein erstes Fenster wieder sichtbar)


JasonX
2012-07-31, 22:55:17
Hi,

ich habe da ein Problem mit meiner Forms Anwendung.

Folgendes.

Ich habe einen Button (Ticketsystem) in meiner Main-Form (mainform) dieser öffnet die zweite Form (ticketsystem) wie folgt:


private void cmdTicket_Click(object sender, EventArgs e)
{
if (ticketsystem == null)
{
ticketsystem = new Ticketsystem();
ticketsystem.Show();
this.Visible = false;
}
else
this.Visible = false;
ticketsystem.Visible = true;
}


Nun habe ich einen Button in der zweiten Form der mich zurück in die erste Form schicken soll, jedoch ohne eine neue Instanz erstellen.

Ich dachte da an folgenden Code:

mainform.Visible = true;
this.Visible = false;

Jedoch macht mir der Compiler einen Strich durch die Rechnung mit folgendem Fehler:

Für das nicht statische Feld, die Methode oder die Eigenschaft "System.Windows.Forms.Control.Visible.get" ist ein Objektverweis erforderlich. C:\...

Ich habe das Problem, nach langem Suchen mit Google usw. verstanden (glaub ich) jedoch verstehe ich das WIE nicht. Also, wie mache ich das, das die Form (ticketsystem) die Form (mainform) kennt.
Ich will ja nicht mit "new" eine neue Instanz starten.

MfG
Jason

Trap
2012-07-31, 23:15:08
Etwas in der Richtung:
ticketsystem = new Ticketsystem();
ticketsystem.MainForm = this;
ticketsystem.Show();

RattuS
2012-08-01, 01:26:58
Gib dem Child-Form das Parent-Form beim Constructor mit.


// click event on parent form
private void cmdTicket_Click(object sender, EventArgs e)
{
// lazy loading
if (this.ticketsystem == null)
this.ticketsystem = new Ticketsystem(this);

this.Hide(); // hide parent
this.ticketsystem.Show(); // show child
}

// constructor
public Ticketsystem(Form parent)
{
this.parent = parent; // remember parent
}

// click event on child form
private void cmdMain_Click(object sender, EventArgs e)
{
if (this.parent is Form)
{
this.Hide(); // hide child
this.parent.Show(); // show parent
}
}

Kenny1702
2012-08-01, 08:17:06
Je nachdem, was deine Absicht ist, könnte auch ShowDialog dein Freund sein.


private void cmdTicket_Click(object sender, EventArgs e)
{
if (ticketsystem == null)
{
ticketsystem = new Ticketsystem();
}
Visible = false;
ticketsystem.ShowDialog();
//EDIT
Visible = true;
//END EDIT
}