Laden...

Aus Form, anderes Form schliessen

Erstellt von ganymedes vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.758 Views
Thema geschlossen
G
ganymedes Themenstarter:in
219 Beiträge seit 2007
vor 16 Jahren
Aus Form, anderes Form schliessen

Wie kann ich aus einem Form heraus ein anderes schliessen?
Ich habe hierzu folgendes probiert....hat aber nicht geklappt!
Form- und Codehandling

kann mir jemand helfen.....

6.862 Beiträge seit 2003
vor 16 Jahren

Einfach form1.Close() wobei form1 die zu schließende Form ist.

Baka wa shinanakya naoranai.

Mein XING Profil.

G
ganymedes Themenstarter:in
219 Beiträge seit 2007
vor 16 Jahren

So funktioniert es auch....aber ich möchte aus Form1 das Form2 schliessen.....kannst du mir helfen?

6.862 Beiträge seit 2003
vor 16 Jahren

Dann rufst du halt Form2.Close() auf 🤔

Baka wa shinanakya naoranai.

Mein XING Profil.

G
ganymedes Themenstarter:in
219 Beiträge seit 2007
vor 16 Jahren

Wie denn??(

Wie kann ich aus Form1 das Close() aus Form2 aufrufen?

243 Beiträge seit 2005
vor 16 Jahren

Form2 kennt bei dir also Form1 nicht?

Dann musst du in Form2 ein Event definieren, das ausgelöst wird wenn sich Form1 schließen soll.
Wenn in Form1 Form2 geöffnet wird, abonnierst du das Event. Der Event-Handler schließt Form1.

gruß ldr

G
ganymedes Themenstarter:in
219 Beiträge seit 2007
vor 16 Jahren

Kannst du ein Code bsp. machen?

Also ich habe Form1. Auf ein Button wird das Form2 geöffnet. Nun sind beide offen. Nun soll sich über Form1 das Form2 wieder schliessen.

6.862 Beiträge seit 2003
vor 16 Jahren

Wo ist denn das Problem? Glaube dir fehlt noch ein Grundverständnis. Du erzeugst doch im Eventhandler der durch den Fenster öffnen Button aufgerufen wird irgendwo nen Objekt von deiner Form2 und zeigst sie dann mit Show bzw, ShowDialog oder? Genau dieses objekt merkst du dir inner Variablen und über diese kannst du es auch jederzeit mit Close schließen.

Baka wa shinanakya naoranai.

Mein XING Profil.

243 Beiträge seit 2005
vor 16 Jahren

Ach verdammt Form1 soll Form2 schließen und nicht umgekehrt? Dann vergiss meinen Ansatz wieder...

ldr

G
ganymedes Themenstarter:in
219 Beiträge seit 2007
vor 16 Jahren

Wo ist denn das Problem? Glaube dir fehlt noch ein Grundverständnis. Du erzeugst doch im Eventhandler der durch den Fenster öffnen Button aufgerufen wird irgendwo nen Objekt von deiner Form2 und zeigst sie dann mit Show bzw, ShowDialog oder? Genau dieses objekt merkst du dir inner Variablen und über diese kannst du es auch jederzeit mit Close schließen.

Genau so mache ich es.....ich möchte jetzt wissen wie ich mir das Objekt in einer Variable merken kann.

6.862 Beiträge seit 2003
vor 16 Jahren

Indem du es der Variablen einfach zuweist. Zeig mal bitte deinen Code zum öffnen der Form und beschreib mal kurz was du da machst, glaub des weißt du selber nicht genau 😉

Baka wa shinanakya naoranai.

Mein XING Profil.

G
ganymedes Themenstarter:in
219 Beiträge seit 2007
vor 16 Jahren

private void cmb_Login_Click(object sender, EventArgs e)
{
// Neue Instanz des Main Forms erstellen
Main start = new Main();
// Form öffnen
start.Show();
}

6.862 Beiträge seit 2003
vor 16 Jahren

Und was ist jetzt die Variable start 😁 Dein Problem ist doch jetzt einfach nur dass start nicht außerhalb dieses Eventhandlers verfügbar ist. Änder des indem du start z.B. zu ner Klassenvariablen machst und schon kannst von überall in der Klasse darauf zugreifen, also auch in deinem Eventhandler der die Form schließen soll.

Baka wa shinanakya naoranai.

Mein XING Profil.

G
ganymedes Themenstarter:in
219 Beiträge seit 2007
vor 16 Jahren

Ich bin ja in einem andern Form und somit auch in einer anderen Klasse....und so kann ich nicht die laufende Instanz ansprechen....verstehe es nicht......

G
ganymedes Themenstarter:in
219 Beiträge seit 2007
vor 16 Jahren

Kann mir jemand sagen wie das geht?

2.187 Beiträge seit 2005
vor 16 Jahren

Du must natürlcih eine Referenz auf die zu schließende Form besitzern.


class FormMitDemSchließenButton : System.Windows.Forms.Form
{
  private System.Windows.Forms.Form zuSchließendeForm = null;

  void Load_Form(object sender, EventArgs e)
  {
    System.Windows.Forms.Form f = new MyForm();
    f.Show();
    this.zuSchließendeForm = f;
  }

  void Schließen_Click(object sender, EventArgs e)
  {
    if(this.zuSchließendeForm!=null)
    {
      this.zuSchließendeForm.Close();
      this.zuSchließendeForm = null;
    }
  }

  // ... restlicher Code von dieser Klasse
}

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo ganymedes,

diese Thread ist ein klassisches Beispiel dafür, wie sehr ein durch fehlende Grundlagen ein Thread unnötig verlängert wird. Deshalb setzen wir auch bestimmte Grundlagen voraus. Das bedeutet, dass man keine Fragen stellen soll, wenn einem die Grundlagen fehlen, um die Antworten zu verstehen. Bitte eigne dir die Grundlagen aus Büchern (z.B. http://www.galileocomputing.de/openbook/visual_csharp/) an. Ein Forum ist schlecht geeignet, um Grundlagen zu vermitteln.

herbivore

Thema geschlossen