Windows Forms pytanie o Close()

0

Witam
Mam pytanie do

using System;
using System.Windows.Forms;

public
class Okno:Form
{
Button buttonl =new Button();
Button button2 =new Button();

private void OnButtonlClick(object sender, EventArgs ea) 

{
    Form Okno2 = new Form();
    Okno2.Text = "Okno nr 2";
    button2.Text ="Zamknij okono";
    button2.Left = (ClientSize.Width - buttonl.Width)/2; 
    button2.Top = 100;
    button2.Click +=new EventHandler(OnButtonlClick2);
    Okno2.Controls.Add(button2);
    Okno2.Show();
}

private void OnButtonlClick2(object sender, EventArgs ea) 

{
    this.Close();
}   

public Okno()
{
    this.Width=320;
    this.Height=240;
    this.Text = "Okno";

    // Button

    buttonl.Text ="Nowe okno"; 
    buttonl.Left = (ClientSize.Width - buttonl.Width)/2; 
    buttonl.Top = 100;
    buttonl.Click +=new EventHandler(OnButtonlClick);

    Controls.Add(buttonl); 

}
public static void Main()
{
    Application.Run (new Okno());
}

}

W obecnej sytuacji użycie OnButtonlClick2 spowoduje zamknięcie całego programu a jak to zrobić by zamknęło tylko Okno2 (wpisanie Okno2.Close(); , powoduje to, że kompilator zwraca błąd, że nazwa nie istnieje w bieżącym kontekście. Za odpowiedz dziękuję, jeśli to możliwe.

1

W tym przypadku this.Close() odwołuje się do obiektu twojego głównego okna musisz zmienić parę rzeczy. Obiekt nowego okna "wyciągnij" z metody OnButtonIClick(), a w tej metodzie this.Close() zmień na Okno2.Close()

using System;
using System.Windows.Forms;

public
class Okno:Form
{
Button buttonl =new Button();
Button button2 =new Button();
Form Okno2;

private void OnButtonlClick(object sender, EventArgs ea)

{
Okno2 = new Form();
Okno2.Text = "Okno nr 2";
button2.Text ="Zamknij okono";
button2.Left = (ClientSize.Width - buttonl.Width)/2;
button2.Top = 100;
button2.Click +=new EventHandler(OnButtonlClick2);
Okno2.Controls.Add(button2);
Okno2.Show();
}

private void OnButtonlClick2(object sender, EventArgs ea)

{
Okno2.Close();
}

public Okno()
{
this.Width=320;
this.Height=240;
this.Text = "Okno";

// Button

buttonl.Text ="Nowe okno"; 
buttonl.Left = (ClientSize.Width - buttonl.Width)/2; 
buttonl.Top = 100;
buttonl.Click +=new EventHandler(OnButtonlClick);

Controls.Add(buttonl); 
}
public static void Main()
{
Application.Run (new Okno());
}

}
0

Dzięki. Czasami jest najtrudniej wpaść na najprostsze rozwiązania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1