none
Anfänger - Windows Forms öffnen Windows Forms RRS feed

  • Frage

  • Hallo,

    ich würde gerne Programmieren, dass sich ein 2tes Fenster öffnet, wenn ich auf einen Button des ersten Fensters klicke.
    Ich habe schon einige Möglichkeiten ausprobiert, aber das bis jetzt einzige Ergebnis war, dass ein neu generiertes Fenster geöffnet wurde, und nicht das, welches ich erstellt habe, obwohl der Name identisch war.

    Wie muss das Fenster eingebunden werden, und vor allem wo, damit ich es für den Befehl "frm.show();" überhaupt zur Verfügung habe?

    Kann mir da jemand helfen?

    mfg Denny


    Diesen Code habe ich gefunden, und ausprobiert, aber irgendwie ohne Erfolg:

    private void button1_Click(object sender, System.EventArgs e)
    {
        Form2 frm = new Form2();
        frm.Show();
    }
    // Create Form2.
    public class Form2: Form
    {
        public Form2()
        {
            Text = "Form2";
        }
    }
    Dienstag, 21. Juli 2009 09:57

Antworten

  • Hallo Denny,

    der von Dir gezeigte Code tut da schon genau das richtige.

    Das in VB Classic verwendbare Form2.Show war eine Kurzversion für das Erzeugen
    einer Standard-Instanz. In C# muß eine Klasse immer erst mit new erzeugt werden -
    ich hatte Dir deswegen auch den Link eingefügt.

    Variieren kann man allerdings die Art und Weise wie ein Fenster geöffnet wird.
    Übergibst Du eine Form Instanz an Show, so ist Form1 das Hauptfenster:
          private void button1_Click(object sender, EventArgs e)
          {
                Form frm = new Form2();
                // abhängig von Form1
                frm.Show(this);
    
                // alternativ für Schreibfaule
                // new Form2().Show(this);
          }
    
    Gruß Elmar
    • Als Antwort markiert Denny_St Mittwoch, 22. Juli 2009 10:30
    Mittwoch, 22. Juli 2009 09:34

Alle Antworten

  • Hallo Denis,

    so ganz verstehe ich nicht, was Du da beabsichtigst.
    Der von Dir gezeigt Code erzeugt eine neue Instanz von Fom2 und Zeit sie an, tut also
    "dass sich ein 2tes Fenster öffnet, wenn ich auf einen Button des ersten Fensters klicke"


    Form2 frm = new Form2(); erzeugt bei jedem Aufruf eine neue Instanz der Klasse Form2

    Show ist eine Methode , die auf die jeweilige Klasseninstanz - hier frm - angewendet wird,
    und das Formular erstmalig anzeigt.

    Gruß Elmar

    Dienstag, 21. Juli 2009 13:07
  • Mhh, also,

    ich habe mir 2 Fenster (Windows Form) erstellt ("Form1" und "Form2").
    Auf "Form1" habe ich einen Button ("btn1") platziert.
    Auf "Form2" habe ich einen Button ("btn2") platziert.
    Beim Programmstart wird "Form1" geladen.

    Wenn ich auf "btn1" klicke soll sich Form2 öffnen! (In VB habe ich dafür immer "Form2.show" geschrieben, aber wenn ich dieses bei C# tue, wird mir nur gesagt, das "Form2" nicht zur Verfügung steht!)

    "btn2" führt bei einem Klick folgendes aus: "this.close"; schließt also "Form2"

    Kannst du nun mein Problem verstehen? Der oben genannte Code war nur eines von vielen Beispielen, die versprochen haben, dieses zu beheben, es aber nicht taten!
    Also ich beötige einen Code für "btn1", damit auf Klick "Form2" geöffnet wird.

    Gruß Denny
    Mittwoch, 22. Juli 2009 05:42
  • Hallo Denny,

    der von Dir gezeigte Code tut da schon genau das richtige.

    Das in VB Classic verwendbare Form2.Show war eine Kurzversion für das Erzeugen
    einer Standard-Instanz. In C# muß eine Klasse immer erst mit new erzeugt werden -
    ich hatte Dir deswegen auch den Link eingefügt.

    Variieren kann man allerdings die Art und Weise wie ein Fenster geöffnet wird.
    Übergibst Du eine Form Instanz an Show, so ist Form1 das Hauptfenster:
          private void button1_Click(object sender, EventArgs e)
          {
                Form frm = new Form2();
                // abhängig von Form1
                frm.Show(this);
    
                // alternativ für Schreibfaule
                // new Form2().Show(this);
          }
    
    Gruß Elmar
    • Als Antwort markiert Denny_St Mittwoch, 22. Juli 2009 10:30
    Mittwoch, 22. Juli 2009 09:34
  • Ah, ok,

    ich habe es gleich mal ausprobiert, und es funktioniert, prima!

    Vielen Dank!
    Mittwoch, 22. Juli 2009 10:02