Click here to Skip to main content
15,886,963 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have recently made a C# WinForm calculator project which fills a single 3x4 block of text boxes. Like so:

C#
private void calculate_Click(object sender, EventArgs e)
{
    TextBox[][] textBoxOutputGroups = new[]
    {
        new [] { tb_Stress111, tb_Stress112, tb_Stress113, },
        new [] { tb_Stress121, tb_Stress122, tb_Stress123, },
        new [] { tb_Stress131, tb_Stress132, tb_Stress133, },
        new [] { tb_Stress141, tb_Stress142, tb_Stress143, },
    };

    if (TextBox1.Text == "" || TextBox2.Text == "")
    {
        MessageBox.Show("Some textboxes are empty!", "Error", 
                         MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    else
    {
        double var1;
        double var2;
        double var3;

        var1 = Convert.ToDouble(TextBox1.Text, CultureInfo.InvariantCulture);
        var2 = Convert.ToDouble(TextBox2.Text, CultureInfo.InvariantCulture);

        if (TextBox3.Text == "")
        {
            var3 = (-0.007 * var1 * 2) + 1.8;
        }

        else
        {
            var3 = Convert.ToDouble
                   (TextBox3.Text, CultureInfo.InvariantCulture);
        }

        for (int WP = 0; WP <= 3; WP++)
        {
            var S1 = Math.Pow((var2 - var1) * WP, 2);
            var S2 = Math.Pow(4 + var3, 2);
            var S3 = Math.Pow(var1, 2);

            double[] outputValues = new[]
            {
                S1 * var2 / 3,
                S1 * S3 / WP,
                var3 + var1 * S2 / WP,
            };

            for (int i = 0; i < outputValues.Length; i++)
            {
                 textBoxOutputGroups[WP][i].Text =                     
        outputValues[i].ToString(CultureInfo.CreateSpecificCulture("en-GB"));
            }
         }
    }
}


What I have tried:

What I'm trying to do now is repeat this with 11 groups of 3x4 textbox groups (which I have already created and named in the form), outputs of which would be filled and modified based on the conditions of the new loops which contain the 'j' variable also a new tadd variable would be added.

Something like this:
C#
        private void calculate_Click(object sender, EventArgs e)
        {
            TextBox[][] textBoxOutputGroups = new[]
            {
                new [] { tb_Stress111, tb_Stress112, tb_Stress113, },
                new [] { tb_Stress121, tb_Stress122, tb_Stress123, },
                new [] { tb_Stress131, tb_Stress132, tb_Stress133, },
                new [] { tb_Stress141, tb_Stress142, tb_Stress143, },

                new [] { tb_Stress211, tb_Stress212, tb_Stress213, },
                new [] { tb_Stress221, tb_Stress222, tb_Stress223, },
                new [] { tb_Stress231, tb_Stress232, tb_Stress233, },
                new [] { tb_Stress241, tb_Stress242, tb_Stress243, },

                new [] { tb_Stress311, tb_Stress312, tb_Stress313, },
                new [] { tb_Stress321, tb_Stress322, tb_Stress323, },
                new [] { tb_Stress331, tb_Stress332, tb_Stress333, },
                new [] { tb_Stress341, tb_Stress342, tb_Stress343, },

                new [] { tb_Stress411, tb_Stress412, tb_Stress413, },
                new [] { tb_Stress421, tb_Stress422, tb_Stress423, },
                new [] { tb_Stress431, tb_Stress432, tb_Stress433, },
                new [] { tb_Stress441, tb_Stress442, tb_Stress443, },

                new [] { tb_Stress511, tb_Stress512, tb_Stress513, },
                new [] { tb_Stress521, tb_Stress522, tb_Stress523, },
                new [] { tb_Stress531, tb_Stress532, tb_Stress533, },
                new [] { tb_Stress541, tb_Stress542, tb_Stress543, },

                new [] { tb_Stress611, tb_Stress612, tb_Stress613, },
                new [] { tb_Stress621, tb_Stress622, tb_Stress623, },
                new [] { tb_Stress631, tb_Stress632, tb_Stress633, },
                new [] { tb_Stress641, tb_Stress642, tb_Stress643, },

                new [] { tb_Stress711, tb_Stress712, tb_Stress713, },
                new [] { tb_Stress721, tb_Stress722, tb_Stress723, },
                new [] { tb_Stress731, tb_Stress732, tb_Stress733, },
                new [] { tb_Stress741, tb_Stress742, tb_Stress743, },

                new [] { tb_Stress811, tb_Stress812, tb_Stress813, },
                new [] { tb_Stress821, tb_Stress822, tb_Stress823, },
                new [] { tb_Stress831, tb_Stress832, tb_Stress833, },
                new [] { tb_Stress841, tb_Stress842, tb_Stress843, },

                new [] { tb_Stress911, tb_Stress912, tb_Stress913, },
                new [] { tb_Stress921, tb_Stress922, tb_Stress923, },
                new [] { tb_Stress931, tb_Stress932, tb_Stress933, },
                new [] { tb_Stress941, tb_Stress942, tb_Stress943, },

                new [] { tb_Stress1011, tb_Stress1012, tb_Stress1013, },
                new [] { tb_Stress1021, tb_Stress1022, tb_Stress1023, },
                new [] { tb_Stress1031, tb_Stress1032, tb_Stress1033, },
                new [] { tb_Stress1041, tb_Stress1042, tb_Stress1043, },

                new [] { tb_Stress1111, tb_Stress1112, tb_Stress1113, },
                new [] { tb_Stress1121, tb_Stress1122, tb_Stress1123, },
                new [] { tb_Stress1131, tb_Stress1132, tb_Stress1133, },
                new [] { tb_Stress1141, tb_Stress1142, tb_Stress1143, },

                new [] { tb_Stress1211, tb_Stress1212, tb_Stress1213, },
                new [] { tb_Stress1221, tb_Stress1222, tb_Stress1223, },
                new [] { tb_Stress1231, tb_Stress1232, tb_Stress1233, },
                new [] { tb_Stress1241, tb_Stress1242, tb_Stress1243, },
            };

            if (TextBox1.Text == "" || TextBox2.Text == "")
            {
                MessageBox.Show("Some textboxes are empty!", "Error", 
                           MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                double var1;
                double var2;
                double var3;

                var1 = Convert.ToDouble
                       (TextBox1.Text, CultureInfo.InvariantCulture);
                var2 = Convert.ToDouble
                       (TextBox2.Text, CultureInfo.InvariantCulture);

                if (TextBox3.Text == "")
                {
                    var3 = (-0.007 * var1 * 2) + 1.8;
                }

                else
                {
                    var3 = Convert.ToDouble(TextBox3.Text == "", 
                           CultureInfo.InvariantCulture);
                }

                var tadd = ((1.25 * var3) - var3) / 6;
                
                for(int j = 1; j <= 12; j++) 
                { 
                    if(j > 1)
                    {
                        var3 = var3 + (((Math.Abs(7 - j) * (-1)) + 6) * tadd);
                    }

                    for (int WP = 0; WP <= 3; WP++)
                    {
                        var S1 = Math.Pow((var2 - var1) * WP, 2);
                        var S2 = Math.Pow(4 + var3, 2);
                        var S3 = Math.Pow(var1, 2);

                        double[] outputValues = new[]
                        {
                            S1 * var2 / 3,
                            S1 * S3 / WP,
                            var3 + var1 * S2 / WP,
                        };

                        for (int i = 0; i < outputValues.Length; i++)
                        {
                            textBoxOutputGroups[WP][i].Text =
outputValues[i].ToString(CultureInfo.CreateSpecificCulture("en-GB"));
                        }                        
                    }
                }
           }
      }

One above only filled the textboxes from the original textBoxOutputGroups leaving the rest empty.

How should I do this?
Posted
Updated 3-Nov-23 4:20am
v2

1 solution

I think your code should be changed like this:
for(int j = 1; j <= 12; j++)
{
    if(j > 1)
    {
        var3 = var3 + (((Math.Abs(7 - j) * (-1)) + 6) * tadd);
    }
    int WP = (j - 1) % 4;

    var S1 = Math.Pow((var2 - var1) * WP, 2);
    var S2 = Math.Pow(4 + var3, 2);
    var S3 = Math.Pow(var1, 2);

    double[] outputValues = new[]
        {
            S1 * var2 / 3,
            S1 * S3 / WP,
            var3 + var1 * S2 / WP,
        };

    for (int i = 0; i<outputValues.Length; i++)
    {
        textBoxOutputGroups[j - 1][i].Text =
           outputValues[i].ToString(CultureInfo.CreateSpecificCulture("en-GB"));
    }
}
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900