GUI z več okni v C# - naloge in kviz

GUI z več okni v C# - naloge in kviz

Avtor: Poboljšaj Nina

1. naloga

Naredi program, ki ima v Form1 gumb Nariši črte in gumb Nariši mrežo. Ob kliku na gumb Nariši črte naj se odpre Form2 in se izvede program, ki nariše črte. Ob kliku na gumb Nariši mrežo se odpre Form3 in se izvede program, ki nariše mrežo.

  • Odpremo C# in kliknemo na Windows Forms, da dobimo Form1.
  • Dodamo dva gumba. Prvi gumb poimenujemo Nariši črte in name spremenimoe v button_črte zaradi lažje preglednosti v samem programu. Drugi gumb poimenujemo Nariši mrežo in name spremenimo v button_mreza.
(1naloga1.png)
Dodajanje gumbov

1. naloga

  • Sedaj pa dvakrat klikknemo na gumb Nariši črte in napišemo program, ki naredi novo formo Form2.
 private void button_črte_Click(object sender, EventArgs e)
        {
            Form2 novoOkno = new Form2();
            novoOkno.Show();
        }
  • Potem pa še v menuju kliknemo Project in Add Windows Form, da dobimo novo Form2.

1. naloga

  • Enak postopek ponovimo na gumbu Nariši mrežo. Dvakrat kliknemo nanj in napišemo program, ki odpre novo formo Form3.
private void button_mreza_Click(object sender, EventArgs e)
        {
            Form3 novoOkno = new Form3();
            novoOkno.Show();
        }
  • Potem v menuju kliknemo Project in Add Windows Form, da dobimo novo Form3.

1. naloga

  • Dvakrat kliknemo na Form2 in vanj vpišemo program za risanje črt.
  protected override void OnPaint(PaintEventArgs paintEvnt)
        {
            // Get the graphics object
            Graphics gfx = paintEvnt.Graphics;
            // Create a new pen that we shall use for drawing the line
            Pen myPen = new Pen(Color.Black);
            // Loop and create a new line 10 pixels below the last one
            for (int i = 20; i < 250; i = i + 10)
            {
                gfx.DrawLine(myPen, 20, i, 270, i);
            }
        }

1. naloga

  • Dvakrat kliknemo na Form3 in vanj vpišemo program za risanje mreže.
protected override void OnPaint(PaintEventArgs paintEvnt)
        {
            // Get the graphics object
            Graphics gfx = paintEvnt.Graphics;
            // Create a new pen that we shall use for drawing the line
            Pen myPen = new Pen(Color.Black);
            // Loop and create a horizontal line 10 pixels below the last one
            for (int i = 20; i <= 250; i = i + 10)
            {
                gfx.DrawLine(myPen, 20, i, 270, i);
            }
            // Loop and create a vertical line 10 pixels next to the last one
            for (int x = 20; x < 280; x = x + 10)
            {
                gfx.DrawLine(myPen, x, 20, x, 250);
            }
        }

1. naloga

  • Sedaj je program končan. Lahko ga poženemo. Ko kliknemo na ta dva gumba program izgleda takole:
(1naloga2.png)
Končna slika

1. naloga - film

Film, ki prikazuje korak za korakom, kako se naredi naloga.

2. naloga

Naredi program v obliki kviza, ki vsebuje 3 vprašanja. Če je dogovor pravilen, naj se odpre novo okno z novim vprašanjem, če je odgovor napačen, naj se odpre novo okno z opozorilom napaka.

  • Odpremo C# in kliknemo na Windows Forms, da dobimo Form1.
  • Dodamo label1. V properties spremenimo Text. Tu napišemo vprašanje.
  • Dodamo še dva gumba. V properties spremenimo Text v Da in Ne.
(vecOkn1.png)
Dodajanje komponent

2. naloga

  • Če kliknemo odogovor Da, se nam odpre novo okno z novim vprašanjem.

Program za odpiranje novega okna:

private void button1_Click(object sender, EventArgs e)
        {
            Form2 novoOkno = new Form2();
            novoOkno.Show();
        }
  • Ko napišemo program, gremo v Project in kliknemo Add Windows Form. Dobimo Form2.
  • Na Form2 dodamo nov label, kjer napišemo novo vprašanje. In pa tri komponente Check Box , kamor shranimo odogovre.

2. naloga

  • Trenutno stanje programa:
(vecOkn2.png)
Pravilen prvi odgovor

2. naloga

  • Na Form1 kliknemo Ne, ki je napačen ogovor. Dobimo novo okno z opozorilom, da je odgovor napačen.

Program za odpiranje opozorila:

 private void button2_Click(object sender, EventArgs e)
        {
            DialogResult Ok = MessageBox.Show("Odgovor je napačen poskusi ponovno!", "NAPAKA",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
(vecOkn3.png)
Napačen odgovor

2. naloga

  • Prvo vprašanje je končano. Gremo na Form2 in tam naredimo enako kot pri prvem vprašanju. Če kliknemo na prvo in tretjo izbiro moramo dobimo opozorilo, ker je odgovor napačen. Če kliknemo na drugo možnost, dobimo novo okno s tretjim vprašanjem.
  • Najprej dvakrat kliknemo na Check Box 1 in 3.
  • Napišemo program za odpiranje opozorila.

Programa odpiranjeopozorila:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            DialogResult Ok = MessageBox.Show("Odgovor je napačen poskusi ponovno!", "NAPAKA",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void checkBox3_CheckedChanged(object sender, EventArgs e)
        {
            DialogResult Ok = MessageBox.Show("Odgovor je napačen poskusi ponovno!", "NAPAKA",
                MessageBoxButtons.OK, MessageBoxIcon.Information);

        }

2. naloga

Trenutno stanje programa:

(vecOkn4.png)
Napačen odgovor

2. naloga

  • Na Form3 dodamo novo vprašanje in komponente. Ko kliknemo na Form2 drugi možni odgovor, ki je pravilen, se odpre tretje novo okno.
  • Napišemo program pri Form2, če izberemo drugo možnost, ki je pravilna.

Program:

 private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            Form3 novoOkno = new Form3();
            novoOkno.Show();
        }
  • Ko napišemo program, gremo v Project in kliknemo Add Windows Form. Dobimo Form3.

2. naloga

  • Če kliknemo na pravilen odgovor, se odpre novo okno Form3.
(vecOkn5.png)
Pravilen drugi odgovor

2. naloga

  • Na From3 kliknemo prvi možni odgovor. Napišemo program, ki nam odpre novo okno, ter nam čestita ker smo pravilno ogovorili na vsa tri vprašanja.

Program:

 private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            DialogResult Ok = MessageBox.Show("Na vsa tri vprašanja si odgovoril pravilno!", "ČESTITAM",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

2. naloga

  • Ko odgovorimo na vsa tri vprašanja pravilno, dobimo spodnjo sliko:
(vecOkn6.png)
Pravilen tretji odgovor

2. naloga

  • Če kliknemo drugi možni odgovor, naredimo program, ki za rezultat dobimo opozorilo, da je odgovor napačen.

Program:

private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            DialogResult Ok = MessageBox.Show("Odgovor je napačen poskusi ponovno!", "NAPAKA",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

2. naloga

(vecOkn7.png)
Napačen odgovor
  • Naloga je končana.

Pet dodatnih nalog

1. naloga Napiši ukaz, ki odpre novo okno.

2. naloga Napiši program, ki bo s klikom na gumb v prvem oknu odprl novo drugo okno.

3. naloga Napiši program, ki bo imel v prvem oknu menu z izbiro zapri. Ko kliknemo na zapri, se nam odpre novo okno z vprašanjem če si to res želimo.

4. naloga Napiši program, v katerem v prvem oknu vnesemo podatke o dolžini stranic, v drugem oknu pa se nariše trikotnik.

5. naloga Napiši program, ki ima v prvem oknu dva TextBox-a kamor vpišemo besede. V drugem oknu pa imamo izbiro unija in presek. S klikom na eno od izbir se rešitev izpiše v drugem oknu.

Kviz - 1. vprašanje

Katero od možnosti izberemo, da se odpre nova forma?

WPF Application
Windows Forms Application
Console Application
Empty Project

Pravilno

Odgovor je pravilen. Naprej

Odgovor ni pravilen.

Če zapreš to okno, lahko poskusiš znova, drugače klikni na ta gumb za naslednje vprašanje Naprej

Kviz - 2. vprašanje

Ali lahko z večkratnim pritiskom na gumb odpremo več enakih form ali lahko odpremo samo eno formo?

Preveri odgovor

Pravilno

Res je. Odgovor je pravilen. Odpremo lahko več enakih form. Naprej

Odgovor ni pravilen.

Če zapreš to okno, lahko poskusiš znova, drugače klikni na ta gumb za naslednje vprašanje Naprej

Kviz - 3. vprašanje

S katerim ukazom odpremo novo formo?

Preveri odgovor

Pravilno

Odgovor je pravilen. Naprej

Odgovor ni pravilen.

Če zapreš to okno, lahko poskusiš znova, drugače klikni na ta gumb za naslednje vprašanje Naprej

Kviz - 4. vprašanje

Ali lahko napišemo program tako, da je na prvi formi vprašanje, potem v drugi formu napišemo odgovor, in v tretji formi dobimo rezultat?

Preveri odgovor

Pravilno

Odgovor je pravilen. Forme so lahko odivsne ena od druge. Naprej

Odgovor ni pravilen.

Če zapreš to okno, lahko poskusiš znova, drugače klikni na ta gumb za naslednje vprašanje Naprej

Kviz - 5. vprašanje

Ali lahko naredimo program, ki bo s klikom na rdeči x(desno zgoraj) preprečil, da bi se forma takoj zaprla? To pomeni, ali lahko naredimo novo okno z opozorilom če si res želimo zapreti okno?

Preveri odgovor

Pravilno

Odgovor je pravilen. Vsakemu oknu lahko dodamo opozorilo preden ga zapremo. Naprej

Odgovor ni pravilen.

Če zapreš to okno, lahko poskusiš znova, drugače klikni na ta gumb za naslednje vprašanje Naprej

0%
0%