Blokowanie zamknięcia formy

0

Witam
Mam trochę śmieszny problem. Chodzi o to, że w formach, w prawym górnym rogu jest krzyżyk odpowiadający za zamykanie formy. Podczas zamykania jednocześnie jest niszczony obiekt formy. Nie będę tłumaczył czemu, ale bardzo nie jest mi na rękę, że ten obiekt ginie. Czy jest np. taka możliwość, żeby ten krzyżyk, miast niszczyć formę, po prostu ją chował (coś jak this.hide()) ??

ps. zlikwidowanie samego krzyżyka nawet bardziej by mnie zadowalało, ale nie chcę stracić przy tym tego paska z nazwą formy.

0

było...
Obsłuż zdarzenie OnCloseQuery, wywołaj funkcję składową formy Hide() i ustaw wartość zmiennej CanClose na false

0

Jakoś nie udało mi się znaleźć na forum czegoś na ten temat. Co do rozwiązania problemu to :

  • Nigdzie nie mogę znaleźć zdarzenia OnCloseQuery. Mam tyklo FormClosing i FormClosed.
  • Zmiennej CanClose dla formy też nie mogę znaleźć.
    Być może czegoś nie rozumiem, więc prosiłbym o trochę jaśniejsze wytłumaczenie http://www.angielskie.republika.pl
0

zrob override metody FormClosing, mniej wiecej tak

proteced override void FormClosing(object sender, eventargs e)
{
((NazwaTwojejKlasyFormmy)sender).Hide();
}

w ten sposob okno znika, ale program sie nie wylacza.

0

Mam problemy z tym overridem.
Klikam na zdarzenie FormClosing i dodają mi się wpisy :
w pliku ekran_opcji.Designer.cs
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ekran_opcji_FormClosing);
oraz w pliku ekran_opcji.cs

private void ekran_opcji_FormClosing(object sender, FormClosingEventArgs e)
        {
        }

Później dodaję twój kod do ekran_opcji.cs

protected override void FormClosing(object sender, FormClosingEventArgs e)
        {
            ((ekran_opcji)sender).Hide();
        }

i dostaję błąd "cannot override because 'System.Windows.Forms.Form.FormClosing' is not a function

Próbuję dodać

protected override void ekran_opcji_FormClosing(object sender, FormClosingEventArgs e)
        {
            ((ekran_opcji)sender).Hide();
        }

i dostaję błąd "...ekran_opcji' already defines a member called 'ekran_opcji_FormClosing' with the same parameter types

To jest pierwszy raz kiedy używam override, i jakoś nie mogę sobie z tym poradzić.

0

Wpisz ten kod do tej wygenerowanej metody. Nie ma tutaj w ogóle nic do przeciążania. Czyli w efekcie powinno wyglądać do tak:

private void ekran_opcji_FormClosing(object sender, FormClosingEventArgs e)
{
	(sender as ekran_opcji).Hide();
	e.Cancel = true;
}

Konieczny jest ustawienie jeszcze pod Cancel true bo co z tego, że ukryjesz formę jak ona i tak się zaraz potem zamknie.

0

Ok wszystko działa pięknie. Wielkie dzięki za pomoc. http://www.piloty.republika.pl Pozdrawiam

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