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.
Jedno z podejść, to ustawienie właściwości DialogResult dla przycisku jeśli okno jest modalne. Jeśli nie, to napisz ;)
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 ??
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();
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? :)
Marooned napisał(a)
Jasne? :)
Ok chyba rozumiem :] Wielkie dzięki za pomoc [browar] </quote>