Home > Software engineering >  How to fill an array from several textboxes?
How to fill an array from several textboxes?

Time:12-18

I am trying to fill an array from several textboxes, then calculate with the values in the array.

I have the following code, but don't know why it doesn't work. Explained in the code:

private void button1_Click(object sender, EventArgs e)
{
    double[] temperaturen = new double[6];

    temperaturen[0] = double.Parse(textBox1.Text);
   
    MessageBox.Show(temperaturen[0].ToString()); //the messagebox is just to test if 
                                                 //it works
}

The above code works, but it stops working after I add more values from more textboxes:

private void button1_Click(object sender, EventArgs e)
{
    double[] temperaturen = new double[6];
    
    temperaturen[0] = double.Parse(textBox1.Text); //now it stops working and gives 
    temperaturen[1] = double.Parse(textBox2.Text); //the following error:
    temperaturen[2] = double.Parse(textBox3.Text); //format exceptions was unhandled.
    temperaturen[3] = double.Parse(textBox4.Text);
    temperaturen[4] = double.Parse(textBox5.Text);
    temperaturen[5] = double.Parse(textBox6.Text);
    temperaturen[6] = double.Parse(textBox7.Text);

    MessageBox.Show(temperaturen[0].ToString());
}

Does anybody know if parsing from textbox is the right way of doing this whatsoever? and why this does not work?

CodePudding user response:

Please note, that you have 7 textboxes, not 6, so you should declare new double[7]. To avoid such errors, let's query with a help of Linq:

using System.Linq;

...

double[] temperaturen = new TextBox[] {
  textBox1, textBox2, textBox3, 
  textBox4, textBox5, textBox6,
  textBox7 }
  .Select(box => double.TryParse(box.Text, out var value) ? value : double.NaN)
  .ToArray();

Note, that text box can have text which is not a valid floating point value (say, "bla-bla-bla"), I put double.NaN (Not a Number) in this case.

CodePudding user response:

The final code, fully functioning. (don't know if this appreciated on stack overflow)

private void button1_Click(object sender, EventArgs e)

    {
        decimal[] temperaturen = new decimal[7];//the array
       

        try//try block
        {

            temperaturen[0] = decimal.Parse(txtZondag.Text);//parsing input 
            temperaturen[1] = decimal.Parse(txtMaandag.Text);//from 
            temperaturen[2] = decimal.Parse(txtDinsdag.Text);//textboxes
            temperaturen[3] = decimal.Parse(txtWoensdag.Text);
            temperaturen[4] = decimal.Parse(txtDonderdag.Text);
            temperaturen[5] = decimal.Parse(txtVrijdag.Text);
            temperaturen[6] = decimal.Parse(txtZaterdag.Text);
            decimal temp = 10.2m;//decimal temp for calculations

            decimal uitkomst1 = 0.0m;//decimal for sum.
            uitkomst1 = temperaturen[0] - temp;//calculation
            textBox8.Text = uitkomst1.ToString();

            decimal uitkomst2 = 0;
            uitkomst2 = temperaturen[1] - temp;
            textBox9.Text = uitkomst2.ToString();

            decimal uitkomst3 = 0;
            uitkomst3 = temperaturen[2] - temp;
            textBox10.Text = uitkomst3.ToString();

            decimal uitkomst4 = 0.0m;
            uitkomst4 = temperaturen[3] = temp;
            textBox11.Text = uitkomst4.ToString();

            decimal uitkomst5 = 0;
            uitkomst5 = temperaturen[4] - temp;
            textBox12.Text = uitkomst5.ToString();

            decimal uitkomst6 = 0;
            uitkomst6 = temperaturen[5] - temp;
            textBox13.Text = uitkomst6.ToString();

            decimal uitkomst7 = 0;
            uitkomst7 = temperaturen[6] - temp;
            textBox14.Text = uitkomst7.ToString();


        }
        catch (Exception exception)//catch block
        {

            MessageBox.Show("Incorrecte invoer!  "   exception.Message);
        }

       


    }
}

}

  • Related