C# probleem bij sluiten van een form waardoor een ander form moet openen

Status
Niet open voor verdere reacties.

moesyss

Nieuwe gebruiker
Lid geworden
12 aug 2014
Berichten
3
Voor school moet ik aan een project werken. Dit gaat over het leren van de maaltafels nu zit ik ergens vast.
dit is de opdracht Schermafbeelding 2014-08-12 om 20.11.50.png
nu lukt het mij nooit om als ik op de startknop druk dat er een nieuwe opgave begint.
Kan er mij hier alsjeblieft mee helpen.
 
ik zet de code er helemaal op omdat de zip niet wordt geupload

dit is de code van frmStap14:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Media;

namespace project_fase1
{
    public partial class FrmStap11 : Form
    {
        #region instantievariabelen
        //private int geselecteerdeTafel;
        //dit is het getal waar je de geselecteerdeTafel mee vermenigvuldigt
        private int factor1 = 5;
        private Random randomFactor1 = new Random();
        //de oplossing die de gebruiker ingaf
        private int oplGebruiker;
        //de berekende oplossing van de opgave
        private int oplCorrect;
        //variabelen voor de timerblokjes
        int breedteTimerBlokje = 25;
        int hoogteTimerBlokje = 80;
        const int XTIMERBLOKJE = 16;
        int xTimerBlokje = XTIMERBLOKJE;
        int yTimerBlokje = 8;
        int deltaxTimerBlokje = 31;
        //stringvariabele om invoer met knoppen op te bouwen
        string oplString = "";
        //stap7
        Graphics paperTimer;
        SolidBrush mijnBorstel;
        //stap8
        int verstrekenTijd;
        //stap 9
        Graphics paperFeedbackStreep;
        Pen correctiePen;
        Graphics paperFeedbackVinkje;
        Bitmap feedbackJuist = project_fase1.Properties.Resources.Check;
        //stap 10
        int punten;
        int teVerdienenPunten;
        Graphics paperPunten;
        int streefdoelPunten = 10;
        int hoogtePuntenBlokje;
        int breedtePuntenBlokje;
        int xPuntenBlokje = 0;
        int yPuntenBlokje;
        Pen penPunten = new Pen(Color.White);
        SolidBrush puntenBorstel;
        Boolean doorstreept = false;
        // stap 13
        int neemGetalUitListGeselecteerdeTafel = 0;
        List<int> listGeselecteerdeTafels = new List<int>();
        private Random geefRandomGetal = new Random();
        List<int> factor2Lijst = new List<int>();

        Formstart startForm = new Formstart();
        List<int> opgavesTafelVan1 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        List<int> opgavesTafelVan2 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        List<int> opgavesTafelVan3 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        List<int> opgavesTafelVan4 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        List<int> opgavesTafelVan5 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        List<int> opgavesTafelVan6 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        List<int> opgavesTafelVan7 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        List<int> opgavesTafelVan8 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        List<int> opgavesTafelVan9 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        List<int> opgavesTafelVan10 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        #endregion

        #region constructor
        public FrmStap11()
        {
            InitializeComponent();
            //stap 7
            paperTimer = panelTimer.CreateGraphics();
            mijnBorstel = new SolidBrush(Color.Green);
            //stap 9
            paperFeedbackStreep = txtOplossing.CreateGraphics();
            correctiePen = new Pen(Color.Red, 4);
            paperFeedbackVinkje = lblFeedback.CreateGraphics();
            timer1.Stop();
            //stap 10
            paperPunten = panelPunten.CreateGraphics();
            hoogtePuntenBlokje = panelPunten.Height / streefdoelPunten;
            breedtePuntenBlokje = panelPunten.Width;
            yPuntenBlokje = panelPunten.Height - hoogtePuntenBlokje+10;
            puntenBorstel = new SolidBrush(Color.RoyalBlue);
            trackBarStreefdoelPunten.Value = streefdoelPunten;
            lblStreefdoelPunten.Text = streefdoelPunten.ToString();
            btnOpnieuw.Enabled = false;
        } 
        #endregion

        #region eventhandlers
        private void panelTimer_Paint(object sender, PaintEventArgs e)
        {
            this.TekenJuisteAantalTimerBlokjes(verstrekenTijd);
            this.ToonPunten();
            if (doorstreept)
            {
                paperFeedbackStreep.DrawLine(correctiePen, 0, txtOplossing.Height - 10, txtOplossing.Width - 10, 15);
            }
        }

       
        //btnEnter klikken --> timer stoppen en feedback oproepen. 
        private void btnEnter_Click(object sender, EventArgs e)
        {

           var itemValue = default(int);
           if (int.TryParse(txtOplossing.Text, out itemValue))
           {
              timer1.Stop();
              this.Feedback();
           }
           else
           {

              timer1.Stop();
              DialogResult error;
              error = MessageBox.Show("Er werd geen getal ingevoerd", "Error!!", MessageBoxButtons.OK);

              if (error == DialogResult.OK)
              {
                 ToonNieuweOpgave();
              }
           }
        }


        private void btnEen_Click(object sender, EventArgs e)
        {
            PasGetalInvoerAan("1");
        }
        private void btnTwee_Click(object sender, EventArgs e)
        {
            PasGetalInvoerAan("2");
        }
        private void btnDrie_Click(object sender, EventArgs e)
        {
            PasGetalInvoerAan("3");
        }
        private void btnVier_Click(object sender, EventArgs e)
        {
            PasGetalInvoerAan("4");
        }
        private void btnVijf_Click(object sender, EventArgs e)
        {
            PasGetalInvoerAan("5");
        }
        private void btnZes_Click(object sender, EventArgs e)
        {
            PasGetalInvoerAan("6");
        }
        private void btnZeven_Click(object sender, EventArgs e)
        {
            PasGetalInvoerAan("7");
        }
        private void btnAcht_Click(object sender, EventArgs e)
        {
            PasGetalInvoerAan("8");
        }
        private void btnNegen_Click(object sender, EventArgs e)
        {
            PasGetalInvoerAan("9");
        }
        private void btnNul_Click(object sender, EventArgs e)
        {
            PasGetalInvoerAan("0");
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            verstrekenTijd++;            
            if (verstrekenTijd == 10)
            {
                timer1.Stop();
                this.Feedback();
            }
            this.TekenJuisteAantalTimerBlokjes(verstrekenTijd);
            
        }

      
        
        //deze timer zorgt er voor dat de feedback bij een opgave voor één seconde zichtbaar blijft.
        private void timer2_Tick(object sender, EventArgs e)
        {

            if (punten < streefdoelPunten) ToonNieuweOpgave();
            timer2.Stop();
        }

        //deze methode past de  variabele streefdoelPunten aan. de hoogtePuntenBlokje wordt ook aangepast.
        private void trackBarStreefdoelPunten_Scroll(object sender, EventArgs e)
        {
            lblStreefdoelPunten.Text = trackBarStreefdoelPunten.Value.ToString();
            streefdoelPunten = Convert.ToInt16(trackBarStreefdoelPunten.Value);
            hoogtePuntenBlokje = panelPunten.Height / streefdoelPunten;
        }

        private void btnOpnieuw_Click(object sender, EventArgs e)
        {
            streefdoelPunten = 10;
            trackBarStreefdoelPunten.Value = streefdoelPunten;
            lblStreefdoelPunten.ForeColor = Color.Black;
            lblStreefdoelPunten.Text = streefdoelPunten.ToString();
            
            punten = 0;
            paperTimer.Clear(Color.White);
            paperPunten.Clear(Color.White);
            paperFeedbackVinkje.Clear(Color.White);
            paperFeedbackStreep.Clear(Color.White);
            txtOplossing.Text = "";
            //listGeselecteerdeTafels.Clear();
            //listBox1.Items.Clear();
            
            timer1.Stop();
            lblOpgave.Text = "";
            trackBarStreefdoelPunten.Enabled = true;
            hoogtePuntenBlokje = panelPunten.Height / streefdoelPunten;
            this.AlleButtonsFalse();
            btnOpnieuw.Focus();
        }

        private void overTafelsVanVermenigvuldigingToolStripMenuItem_Click(object sender, EventArgs e)
        {
           AboutBox1 a = new AboutBox1();
           a.Show();
        }

        private void nieuwToolStripMenuItem_Click(object sender, EventArgs e)
        {
           if (startForm.ShowDialog() == DialogResult.OK)
           {
              timer3.Start();
              listGeselecteerdeTafels = (List<int>)startForm.Tag;
              switch (factor1)
              {
                 case 1:
                    factor2Lijst = opgavesTafelVan1;
                    break;
                 case 2:
                    factor2Lijst = opgavesTafelVan2;
                    break;
                 case 3:
                    factor2Lijst = opgavesTafelVan3;
                    break;
                 case 4:
                    factor2Lijst = opgavesTafelVan4;
                    break;
                 case 5:
                    factor2Lijst = opgavesTafelVan5;
                    break;
                 case 6:
                    factor2Lijst = opgavesTafelVan6;
                    break;
                 case 7:
                    factor2Lijst = opgavesTafelVan7;
                    break;
                 case 8:
                    factor2Lijst = opgavesTafelVan8;
                    break;
                 case 9:
                    factor2Lijst = opgavesTafelVan9;
                    break;
                 case 10:
                    factor2Lijst = opgavesTafelVan10;
                    break;
              }
           }
        }

        #endregion

        #region methodes
        //deze methode tekent een timerblokje en past zet de xpositie goed voor de volgende
        public void TekenTimerBlokje(Graphics paperTimer, Brush borstel, ref int xPos)
        {
            paperTimer.FillRectangle(borstel, xTimerBlokje, yTimerBlokje, breedteTimerBlokje, hoogteTimerBlokje);
            xPos = xPos + deltaxTimerBlokje;
        }

        public void TekenJuisteAantalTimerBlokjes(int verstrekenTijd)
        {
            xTimerBlokje = XTIMERBLOKJE;
            mijnBorstel.Color = Color.Green;
            int i = 1;
            while ((i <= verstrekenTijd) && (i<=4))
            {
                this.TekenTimerBlokje(paperTimer, mijnBorstel, ref xTimerBlokje);
                i++;
            }

            mijnBorstel.Color = Color.Orange;
            while ((i<=verstrekenTijd) && (i>4) && (i < 8))
            {
                this.TekenTimerBlokje(paperTimer, mijnBorstel, ref xTimerBlokje);
                i++;
            }

            mijnBorstel.Color = Color.Red;
            while ((i <= verstrekenTijd) && (i >= 7))
            {
                this.TekenTimerBlokje(paperTimer, mijnBorstel, ref xTimerBlokje);
                i++;
            }

        }

        //deze methode past de oplstring aan en toont die in txtOplossing
        public void PasGetalInvoerAan(string nieuwCijfer)
        {
            oplString += nieuwCijfer;
            txtOplossing.Text = oplString;
        }

        public void ActieBijRadioButtons()
        {
           //this.Tag = listGeselecteerdeTafels;

           //listGeselecteerdeTafels.Add(geselecteerdeTafel);
            //ToonNieuweOpgave();
           ToonNieuweOpgave();
           //project1
           trackBarStreefdoelPunten.Enabled = false;
           btnNul.Enabled = true;
           btnEen.Enabled = true;
           btnTwee.Enabled = true;
           btnDrie.Enabled = true;
           btnVier.Enabled = true;
           btnVijf.Enabled = true;
           btnZes.Enabled = true;
           btnZeven.Enabled = true;
           btnAcht.Enabled = true;
           btnNegen.Enabled = true;
           btnEnter.Enabled = true;

        }

        public void ToonNieuweOpgave()
        {
             //stap13
           neemGetalUitListGeselecteerdeTafel = listGeselecteerdeTafels.ElementAt(geefRandomGetal.Next(listGeselecteerdeTafels.Count));

           timer1.Start();
           oplString = "";
           verstrekenTijd = 0;
           teVerdienenPunten = 3;
           paperTimer.Clear(Color.White);
           paperFeedbackVinkje.Clear(Color.White);
           doorstreept = false;
           mijnBorstel.Color = Color.Green;
           xTimerBlokje = XTIMERBLOKJE;
           txtOplossing.Text = "";
           lblFeedback.Text = "";
           //factor1 = randomFactor1.Next(0, 11);
           lblOpgave.Text = factor1 + " x " + neemGetalUitListGeselecteerdeTafel + " =";
           try
           {
              factor1 = factor2Lijst.ElementAt(geefRandomGetal.Next(factor2Lijst.Count));

              lblOpgave.Text = factor1 + " x " + neemGetalUitListGeselecteerdeTafel + " =";
           }
           catch (SystemException)
           {
              MessageBox.Show("Proficiat alle opgaves zijn corect opgelost");
              timer1.Stop();
           }
           
           txtOplossing.Focus();
            
            
   
        }

        //stap 9 deze methode doorstreept foutieve oplossingen die de gebruiker ingaf en toont de correcte oplossing
        //in lblFeedback. De variabele punten wordt aangepast.
        //stap 10: te verdienen punten worden ook aangepast.
        //stap 11: op het einde een nieuwe opgave oproepen tot er 10 punten zijn verzameld.
        public void Feedback()
        {

            if (verstrekenTijd > 4) teVerdienenPunten = 2;
            if (verstrekenTijd > 7) teVerdienenPunten = 1;
            if (verstrekenTijd == 10) teVerdienenPunten = 0;

            oplCorrect = factor1 * neemGetalUitListGeselecteerdeTafel;
            if (txtOplossing.Text == "")
            {
                lblFeedback.Text = oplCorrect.ToString();
                teVerdienenPunten = 0;
            }
            else
            {
                oplGebruiker = Convert.ToInt32(txtOplossing.Text);
                if (oplGebruiker != oplCorrect)
                {
                    paperFeedbackStreep.DrawLine(correctiePen, 0, txtOplossing.Height - 10, txtOplossing.Width - 10, 15);
                    lblFeedback.Text = oplCorrect.ToString();
                    teVerdienenPunten = 0;
                    doorstreept = true;
                }
                else
                {
                    factor2Lijst.Remove(factor1);
                    paperFeedbackVinkje.DrawImage(feedbackJuist, 25, 5);
                    //verwijderUitlijst();
                    this.lblFeedback.ImageAlign = System.Drawing.ContentAlignment.TopRight;
                }
            }
            punten = punten + teVerdienenPunten;
            this.ToonPunten();
            //oorspronkelijk werd hier ToonNieuweOpgave opgeroepen, maar dit gebeurt zo snel dat 
            //de feedback niet meer zichtbaar is. Oplossing timer2 invoeren. Die start hier.
            //bij volgende tick van de timer wordt de methode ToonNieuweOpgave opgeroepen en wordt de timer
            //onmiddellijk weer gestopt.
            timer2.Start();
            
            if (punten >= streefdoelPunten)
            {
                SoundPlayer simpleSound = new SoundPlayer(project_fase1.Properties.Resources.tada);
                simpleSound.Play();
                lblStreefdoelPunten.ForeColor = Color.RoyalBlue;
                btnOpnieuw.Enabled = true;
                timer1.Stop();
                this.AlleButtonsFalse();
                btnOpnieuw.Focus();

                
            }
        }
      

        //Deze methode toont hoeveel punten de gebruiker al verzamelde.
        public void ToonPunten()
        {
            paperPunten.Clear(Color.White);
            yPuntenBlokje = panelPunten.Height - hoogtePuntenBlokje;

            int minPuntenEnStreefdoelPunten;
            if (punten > streefdoelPunten)
            {
                minPuntenEnStreefdoelPunten = streefdoelPunten;
            }
            else
            {
                minPuntenEnStreefdoelPunten = punten;
            }


            for (int i = 1; i <= minPuntenEnStreefdoelPunten; i++)
            {
                this.TekenPuntenBlokje(paperPunten, puntenBorstel, ref yPuntenBlokje);
            }
        }
        //deze methode tekent een puntenblokje en past zet de xpositie goed voor de volgende
        public void TekenPuntenBlokje(Graphics paperPunten, Brush borstel, ref int yPos)
        {
            paperPunten.FillRectangle(borstel, xPuntenBlokje, yPuntenBlokje, breedtePuntenBlokje, hoogtePuntenBlokje);
            paperPunten.DrawRectangle(penPunten, xPuntenBlokje, yPuntenBlokje, breedtePuntenBlokje, hoogtePuntenBlokje);
            yPos = yPos - hoogtePuntenBlokje;
        }

        public void AlleButtonsFalse()
        {
            btnNul.Enabled = false;
            btnEen.Enabled = false;
            btnTwee.Enabled = false;
            btnDrie.Enabled = false;
            btnVier.Enabled = false;
            btnVijf.Enabled = false;
            btnZes.Enabled = false;
            btnZeven.Enabled = false;
            btnAcht.Enabled = false;
            btnNegen.Enabled = false;
            btnEnter.Enabled = false;
        }
        #endregion

        private void timer3_Tick(object sender, EventArgs e)
        {
           ToonNieuweOpgave();
           verstrekenTijd++;
           if (verstrekenTijd == 10)
           {
              timer1.Stop();
              this.Feedback();
           }
           this.TekenJuisteAantalTimerBlokjes(verstrekenTijd);

           
            

        }
    }
}

en dit is de code van frmStart:

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace project_fase1
{
   public partial class Formstart : Form
   {
      public Formstart()
      {
         InitializeComponent();
      }

      private void button1_Click(object sender, EventArgs e)
      {
         List<int> listGeselecteerdeTafels = new List<int>();
         if (checkBox1.Checked)
         {
            listGeselecteerdeTafels.Add(1);
         }
         if (checkBox2.Checked)
         {
            listGeselecteerdeTafels.Add(2);
         }
         if (checkBox3.Checked)
         {
            listGeselecteerdeTafels.Add(3);
         }
         if (checkBox4.Checked)
         {
            listGeselecteerdeTafels.Add(4);
         }
         if (checkBox5.Checked)
         {
            listGeselecteerdeTafels.Add(5);
         }
         if (checkBox6.Checked)
         {
            listGeselecteerdeTafels.Add(6);
         }
         if (checkBox7.Checked)
         {
            listGeselecteerdeTafels.Add(7);
         }
         if (checkBox8.Checked)
         {
            listGeselecteerdeTafels.Add(8);
         }
         if (checkBox9.Checked)
         {
            listGeselecteerdeTafels.Add(9);
         }
         if (checkBox10.Checked)
         {
            listGeselecteerdeTafels.Add(10);
         }
         timer3.Start();
         this.Tag = listGeselecteerdeTafels;
       

      }
   }
}
 
Laatst bewerkt:
Het is geen probleem als je de hele code wilt plaatsen, maar zet er dan wel codetags omheen. Dus:
[ CODE]
Je code
[ /CODE]

Maar dan zonder de spaties achter de [ tekens, zodat je dit krijgt:
Code:
Je code
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan