2010-02-01 9 views

Odpowiedz

2

dwie opcje, w zależności od tego, co trzeba:

  1. Zastosowanie ShowDialog zamiast Show, które zostanie otwarte okno modalne. Jest to oczywiste rozwiązanie, jeśli nie potrzebujesz, aby główny formularz był aktywny, gdy formularz dziecka jest otwarty.

  2. Możesz też śledzić okno, które już otworzyłeś w głównym formularzu, i nie rób nic, jeśli jest już otwarte. Będzie to potrzebne, jeśli chcesz, aby użytkownik mógł korzystać z głównego formularza, gdy formularz podrzędny jest już otwarty, być może, aby otworzyć inne formularze.

0

Wyłącz główny formularz, aż formularz dziecka zniknie lub wyłącz przycisk.

button_onClick(object Sender, EventArgs e) 
{ 
    Button btn = sender as Button; 
    btn.Enabled = false; 
    Form myform = new MyForm(); 
    myform.Show(); 
} 

Oczywiście, to naprawdę powinien być używany form.ShowDialog() zamiast form.Show() jeśli chcesz modalne zachowanie.

2

zrobić coś takiego:

SingleForm myform = null; 

void ShowMyForm_Click(object sender, EventArgs e) 
{  if (myform == null) 
     { 
      myform = new SingleForm(); 
     } 
     myform.Show(); 
     myform.BringToFront(); 
} 
+0

jest to lepsze rozwiązanie, ale nie zapobiega przypadkowemu lub celowemu ponownemu doprowadzeniu głównego formularza do przodu. –

+0

nie powiedział, że główny formularz musiał pozostać w tle ... po prostu nie chciał, aby użytkownik mógł otworzyć inny formularz po kliknięciu przycisku ...;) Ale do edycji. .. oh ... Myślałem, że źle odczytałem. Myślałem, że istnieje druga forma, która została otwarta po kliknięciu przycisku ... idk – IAbstract

+0

Zamierzałem dodać .ShowDialog() jako inną opcję, ale John K. i Johannes pobili mnie do tego – IAbstract

1

zmusić obiektu formularza do przestrzegania Singleton

0

wolę używać generycznych i leniwy załadunku obsługiwać swoje formy. Ponieważ wszystkie moje formy dziedziczą po klasie bazowej, mogę użyć tej samej metody, aby wyprowadzić formularze na front, wysłać je na odwrót, zniszczyć, uruchomić itd.

Jeśli zachowasz klasę menedżera formularzy, odpowiedzialny za zarządzanie dowolnymi załadowanymi formularzami, możesz przynieść dowolną formę z przodu, którą chcesz, lub uniemożliwić określone formularze, aby mogły wrócić, o ile nie zostaną spełnione określone kryteria.

Powiązane problemy