MdiParent i ShowDialog

Odpowiedz Nowy wątek
2012-12-06 13:26

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0

Witam!
Mam taki problem: chciałabym aby aplikacja była typu MDI. Poniższy kod w takiej formie nie działa. Dopiero jak za komentuje f.MdiParent = this;. Wiem że MdiParent i ShowDialog razem nie zadziałają, ale nie wiem jak to obejść. Potrzebuję DialogResult, ponieważ okno rodzica ma się modyfikować po zamknięciu okna dziecka.
Oto kod:

  private void btn_Nowy_Click(object sender, EventArgs e)
        {            
            Okno_Nowy f = new Okno_Nowy();
            //mdi
            f.MdiParent = this; //rodzic

            if (f.ShowDialog() == DialogResult.OK) //oczekiwanie na OK
            {
                this.Okno_Tabela_Load(sender, e); 
            }
        } 
edytowany 1x, ostatnio: danuta258, 2012-12-06 13:27

Pozostało 580 znaków

2012-12-06 14:43

Rejestracja: 7 lat temu

Ostatnio: 12 godzin temu

0

albo MDI albo ShowDialog - nie da się zjeść ciastka i mieć ciastko


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2012-12-06 14:49

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0

A można jakoś inaczej to obejść, aby uzyskać ten sam efekt tzn. mdi i modyfikacja okna rodzica?

edytowany 1x, ostatnio: danuta258, 2012-12-06 15:12

Pozostało 580 znaków

2012-12-06 15:19

Rejestracja: 7 lat temu

Ostatnio: 12 godzin temu

0

ale jaki efekt??? Wytłumacz mi jak wg ciebie ma się zachowywać okno MDIChildren pokazane modalnie?


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2012-12-06 15:30

Rejestracja: 16 lat temu

Ostatnio: 16 godzin temu

0

Potrzebuję DialogResult, ponieważ okno rodzica ma się modyfikować po zamknięciu okna dziecka.

Zamiast ShowDialog, otwieraj normalnie a oprogramuj zdarzenie Close tego okna.

Pozostało 580 znaków

2012-12-06 15:36

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0

Są trzy okna: OknoGlowne, TabelaPacjentow, NowyPacjent.
Najpierw jest okno główne programu (OknoGlowne), które parametr IsMdiContainer ma ustawione na true. Z jego poziomu otwieram okno Tabela pacjentów za pomocą:


 Okno_TabelaPacjentow f = new Okno_TabelaPacjentow();
            f.MdiParent = this;
            f.Show();

I to działa w porządku. Następnie z poziomu okna TabelaPacjentów, która w gridzie wyświetla aktualnych pacjentów, chcę otworzyć okno NowyPacjent, którego rodzicem ma być nadal te OknoGłówne (chcę by wszystkie formy "zagnieżdżały się w tym oknie głównym). I teraz jest ten kłopotliwy kod:


private void btn_NowyPacjent_Click(object sender, EventArgs e)
        {
            rejestracjaCzyGabinet = 2;
            Okno_NowyPacjent f = new Okno_NowyPacjent();
            //mdi
            f.MdiParent = this.MdiParent; //rodzic nowego okna ma być ten sam co bieżącego okna

            if (f.ShowDialog() == DialogResult.OK)
            {
                this.Okno_TabelaPacjentow_Load(sender, e);
            }
        }

Efekt który chcę uzyskać, to aby okno NowyPacjent "zagnieżdżało się" w oknie głównym oraz aby po zapisani nowego pacjenta (czyli zamknięciu okna NowyPacjent) zmodyfikowało się okno TabelaPacjentow (w gridzie pojawił się nowo dodany pacjent).

Pozostało 580 znaków

2012-12-06 15:39

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0
Azarien napisał(a):

Potrzebuję DialogResult, ponieważ okno rodzica ma się modyfikować po zamknięciu okna dziecka.

Zamiast ShowDialog, otwieraj normalnie a oprogramuj zdarzenie Close tego okna.

Chciałam by to wyglądało bardziej płynnie. Ale jak się nie da inaczej, to zrobię z Close.

Pozostało 580 znaków

2012-12-06 16:04

Rejestracja: 7 lat temu

Ostatnio: 12 godzin temu

0

no tylko, że przy takim podejściu to nikt mi nie zabroni otworzyć 1000 okien "NowyPacjent". O ile to jeszcze można uznać za dopuszczalne o tyle otwarcie 1000 okien "EdytujPacjenta" to już błąd. Jeśli już bardzo chcesz aplikację MDI to przyjęło się, że oknami MDIChildren są okna z wszelkiego rodzaju listami, zestawieniami itp, natomiast okna edycyjne (tak jak i informacyjne) są zwykłymi oknami modalnymi


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
edytowany 1x, ostatnio: abrakadaber, 2012-12-06 21:32

Pozostało 580 znaków

Odpowiedz

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