Невозможно получить значения из текстовых полей в форме - PullRequest
1 голос
/ 12 апреля 2019

Поэтому я пытаюсь получить пользовательский ввод из моих текстовых полей, которые выводятся на экран через цикл и операторы if.При попытке напечатать значения, помещенные в текстовое поле, я получаю только одно значение.Вот код для добавления текстовых полей в сетку:

 private void InsertEasyNums()
    {
            int x = 70;
            int y = 40;

        for (int i = 0; i < 9; i++)
        {
            if (i == 3)
            {
                x = 70;
                y = 160;
            }
            else if(i == 6)
            {
                x = 65;
                y = 280;
            }
            if (easyNums[i] == '0')
            {
                DrawingField.SendToBack();
                int panelX = x + 300;
                int panelY = y + + 100;

                Font newFont = new Font("Arial", 25);
                Point tbLocation = new Point(panelX, panelY);
                userInput[i] = new TextBox();

                userInput[i].Name = "Row[i]TB";
                userInput[i].Font = newFont;
                userInput[i].Width = 50;
                userInput[i].Location = tbLocation;
                userInput[i].BorderStyle = BorderStyle.None;
                userInput[i].BackColor = DefaultBackColor;
                Controls.Add(userInput[i]);
                DrawingField.SendToBack();

                x = x + 145;
                DrawingField.SendToBack();
            }
            else if (easyNums[i] != '0')
            {
                DrawingField.SendToBack();
                Font drawFont = new Font("Arial", 30, FontStyle.Bold);
                Brush Numbers = new SolidBrush(Color.Black);
                Graphics g = DrawingField.CreateGraphics();
                g.DrawString(Convert.ToString(easyNums[i]), drawFont, 
                Numbers, x, y);
                x = x + 146;
            }

        }

    }

Здесь я пытаюсь напечатать текстовые поля:

 foreach (Control c in DrawingField.Controls)
        {
            if (c is TextBox)
            {
                int i = 0;
                TextBox txt = (TextBox)c;
                string str = txt.Text;
                TBValues[i] = str;
                i++;


            }
        }
        foreach (var key in TBValues)
        {
            MessageBox.Show(key);
        }

ОТВЕТ: Я переместил объявление userInput вначало метода и перебрал 9 раз, чтобы получить 9 текстовых полей, затем использовал операторы if для их перемещения и изменения свойств.

1 Ответ

0 голосов
/ 12 апреля 2019

попробуй переместить меня до цикла

       int i = 0;
 foreach (Control c in DrawingField.Controls)
    {
        if (c is TextBox)
        {

            TextBox txt = (TextBox)c;
            string str = txt.Text;
            TBValues[i] = str;
            i++;


        }
    }
    foreach (var key in TBValues)
    {
        MessageBox.Show(key);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...