Program typu quiz w Windows Forms

0

Witam.
Ćwiczę sobie pisanie aplikacji w Windows Forms i postanowiłem napisać program, taki jakby quiz. Program ma działać w ten sposób, że po uruchomieniu pokazuje się okno główne i tam jest m.in. przycisk Start. Po rozpoczęciu gry powinno się pokazać pytanie, a po wybraniu odpowiedzi i kliknięciu przycisku Dalej kolejne, i tak aż do końca pytań. Jak to najlepiej zaprogramować, chodzi mi o to przełączanie pytań, jakiego komponentu użyć?

0

Stwórz sobie drugą formę i zmieniaj na niej tylko napisy. Wszystkie komponenty jakie potrzebujesz to np. radiobutton, button i label.

0

Drugą formę? Po co?
Wystarczy jakiś Panel lub TableLayoutPanel i w nim generowanie odpowiednich kontrolek. Chybaże odpowiedzi zawsze będzie stała ilość, to faktycznie możesz na stałe wrzucić 3 (czy 4) radiobuttony i jak napisal Carlos podmieniać Text. Później wystarczy ukryć panel (visibility=false).

0

Dodałem nową formę do mojego programu. Teraz chciałbym aby po naciśnięciu przycisku Start, pokazywała się ta nowa druga forma, a pierwsza została ukryta. Robię to w ten sposób:

 
private void button1_Click(object sender, EventArgs e)
{
     Form2 forma2 = new Form2();
     forma2.ShowDialog();
     Hide();
}

Następnie po zamknięciu drugiej formy, ta pierwsza powinna się pokazać. No i właśnie z tym mam problem, bo jeśli napisze coś takiego jak poniżej to faktycznie forma druga zamyka się, a pierwsza się pokazuje, jednak po zamknięciu tej pierwszej program dalej działa. Dlaczego tak jest i jak to rozwiązać?

 
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
     Form1 forma1 = new Form1();
     forma1.Show();
}
0

No i po co była ci ta druga forma? :)

ShowDialog powoduje, że dalsze instrukcje nie wykonają się aż do czasu zamknięcia tego dialogu (czyli form2).

private void button1_Click(object sender, EventArgs e)
{
  this.Hide();     
  Form2 forma2 = new Form2();
  forma2.Show();
}

Teraz czemu działa dalej program? Bo pokazałeś form2, po jego zamknięciu ukryłeś okno główne form1. Na zamknięciu form2 tworzysz nowe okno form1, które nie jest oknem głównym. Główne jest nadal ukryte. Po zamknięciu tego form1 utworzonego w form2 program działa dalej, bo dalej istnieje okno główne, które jest instancją klasy Form1. Ale Form1 nie jest singletonem, dlatego mogłeś utworzyć sobie nowe okno (instancję) tej samej klasy.

0

Ok, massther dzięki za wytłumaczenie. Teraz już wszystko jasne. Jakby ktoś miał pdodobny problem to znalazłem na to rozwiązanie:

 
private void button1_Click(object sender, EventArgs e)
{
    this.Hide();
    Form2 forma2 = new Form2();
    forma2.FormClosed += new FormClosedEventHandler(forma2_FormClosed);
    forma2.Show();
}

void forma2_FormClosed(object sender, FormClosedEventArgs e)
{
    this.Show();
}

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