Zamknięcie jednej z form

0

Witam.
Mam taki problem, są dwie formy, na jednej formie jest przycisk about, który po wciśnięciu tworzy instancję drugiej formy i ją pokazuje i na tej drugiej formie jest przycisk OK i tu jest problem jak zrobić żeby po wciśnięcu OK zamykało mi tylko drugą formę, jak w obsługe zdarzenia przycisku OK napisze Application.Exit() to mi zamyka całość? Z góry dzięki za pomoc.

0

Jedno z podejść, to ustawienie właściwości DialogResult dla przycisku jeśli okno jest modalne. Jeśli nie, to napisz ;)

0

Marooned, nie wiem czy jest modalne i nawet nie wiem jak to sprawdzić, a już totalnie nie mam pojęcia jak zamknąć okno, może mógłbyś mi to przybliżyć ?

Zrobiłem tak:

Form2 form = new Form2();
            //form.Show();
            if (form.ShowDialog() == DialogResult.OK)
                form.Close();

i poszło chyba o to ci chodziło ??

0

Aby zamknąć formę, która nie jest główną, wystarczy wywołać
z procedury obsługi zdarzenia przycisku tej formy funkcję
this.close();
Aby zamknąć to okno z głównej formy musisz posiadać referencje
do niego np. private CAboutForm frmAbout, potem wywołujesz
gdzieś w programie frmAbout.close();

0
wyspiarz napisał(a)

Zrobiłem tak:

Form2 form = new Form2();
            //form.Show();
            if (form.ShowDialog() == DialogResult.OK)
                form.Close();

i poszło chyba o to ci chodziło ??
hehe, prawie - Close() jest zbędne.

Form2 form = new Form2();
if (form.ShowDialog() == DialogResult.OK)
{//tutaj robisz coś po zamknięciu formy
}

a jeśli nie potrzebujesz nic robić w programie po zamknięciu formy, to wystarczy takie coś:

Form2 form = new Form2();
form.ShowDialog();

Teraz wyjaśnienie.
Metoda ShowDialog() powoduje, że forma, na rzecz której ta metoda jest wywołana staje się oknem modalnym, czyli takim, które pojawia się na wierzchu i do czasu jej zamknięcia forma wywołująca nie jest dostępna/aktywna. Przykładem okna modalnego jest MessageBox.

Jednak aby zakończyć takie okno modalne, to już napisałem. Należy ustawić buttonowi wartość DialogResult [opcje przycisku] np. na DialogResult.OK
Jeśli ustawisz to na zakładce 'design' to w kodzie pojawi się taka linijka:

this.button.DialogResult = System.Windows.Forms.DialogResult.OK;

Taki guzik zamknie okno i zwróci DialogResult.OK

Jasne? :)

0
Marooned napisał(a)

Jasne? :)

Ok chyba rozumiem :] Wielkie dzięki za pomoc [browar] </quote>

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