Данные из динамически добавленных проанализированных текстовых полей - PullRequest
0 голосов
/ 26 августа 2018

Я делаю простой калькулятор, чтобы избавить себя от необходимости добавлять кучу счетов на базовый калькулятор на работе (поскольку мы используем бумажные счета).Сейчас я просто использую базовые функции, и одна из функций, которые у меня есть, - добавление дополнительных текстовых полей, а затем попытка добавить все значения в текстовых полях в промежуточный итог.Проблема, с которой я столкнулся (я думаю), заключается в том, что компилятору необходимо иметь идентификаторы текстового поля перед компиляцией программы.Я также собираюсь извиниться за неаккуратные имена переменных, я пробовал все, что мог придумать, в моем базовом мышлении до 4 утра, а к тому времени я просто использовал любую переменную.Я перепробовал все итерации (как вы можете видеть с помощью оператора do while).

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        int partboxes = 3;
        int lastY = 83;

        public Form1()
        {
            InitializeComponent();
        }

        private void buttonFinal_Click(object sender, EventArgs e)
        {
            AddParts();
        }

        public double AddParts()
        {
            int i = 1;
            double megavalue = 0;


            do
            {
                double totalsum = double.Parse(("partBox" + i).Text);
                megavalue = totalsum + megavalue;

                i = i + 1;
            } while (i < partboxes);


            string supervalue = megavalue.ToString();
            lblPartsTotal.Text = supervalue;
            return megavalue;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            TextBox partBox = new TextBox();
            partBox.Name = "partBox" + partboxes++;
            partBox.Location = new System.Drawing.Point(12, lastY + 26);
            partBox.Size = new System.Drawing.Size(100, 20);
            // Add the textbox control to the form's control collection
            this.Controls.Add(partBox);
            lastY = lastY + 26;
            partboxes = partboxes++;
        }
    }
}

1 Ответ

0 голосов
/ 26 августа 2018

Текстовое поле по имени можно получить из свойства Controls с помощью

var tb = (TextBox)Controls["partBox" + i];

, где i - номер текстового поля.

Индексатор возвращает Control.Но поскольку каждый элемент управления имеет свойство Text, вы можете использовать его без приведения.

double totalsum = double.Parse(Controls["partBox" + i].Text);

См .: Control.ControlCollection Class

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...