Search code examples
c#foreachtextbox

C# Foreach reading from textboxes in wrong order


So I am trying to load coordinates from textboxes to list of doubles. I already edited their TabIndex so they are in order, but when I try to load the numbers it is reading the textboxes in some weird odrer. 2->4->8->7->5->6->3->1 Can anyone help me with this? The sur_x and sur_y are the names of the lists.

    public Boolean Nacitanie_hodnot()
    {
        // premazanie listov a vlozenie prvej hodnoty
        sur_x.Clear();
        sur_y.Clear();
        sur_x.Add(0);
        sur_y.Add(0);

        int i = 1;
        // nacitanie hodnot
        /*Ax = double.Parse(suradnica_Ax.Text, CultureInfo.InvariantCulture.NumberFormat);
        Ay = double.Parse(suradnica_Ay.Text, CultureInfo.InvariantCulture.NumberFormat);
        Bx = double.Parse(suradnica_Bx.Text, CultureInfo.InvariantCulture.NumberFormat);
        By = double.Parse(suradnica_By.Text, CultureInfo.InvariantCulture.NumberFormat);

        Cx = double.Parse(suradnica_Cx.Text, CultureInfo.InvariantCulture.NumberFormat);
        Cy = double.Parse(suradnica_Cy.Text, CultureInfo.InvariantCulture.NumberFormat);
        Dx = double.Parse(suradnica_Dx.Text, CultureInfo.InvariantCulture.NumberFormat);
        Dy = double.Parse(suradnica_Dy.Text, CultureInfo.InvariantCulture.NumberFormat);*/
        foreach (Control control in suradnice_vrcholov.Controls)
        {
            if ((control is TextBox) && (control.Text == "Zadaj"))
            {
                return false;
            }

            else if ((control is TextBox) && ((i % 2) != 0))
            {
                sur_x.Add(double.Parse(control.Text, CultureInfo.InvariantCulture.NumberFormat));
                i++;
            }

            else if ((control is TextBox) && ((i % 2) == 0))
            {
                sur_y.Add(double.Parse(control.Text, CultureInfo.InvariantCulture.NumberFormat));
                i++;
            }
        }
        return true;
    }

Solution

  • Is that what you are trying to reach:?

    foreach (Control control in suradnice_vrcholov.Controls.OfType<TextBox>().OrderBy(c => c.TabIndex))