来自动态添加的已解析文本框的数据

时间:2018-08-26 16:47:45

标签: c# winforms

我正在制作一个简单的计算器,以免自己在工作时不得不在基本计算器上累加一堆发票总额(因为我们使用纸质发票)。我现在只是获得基本功能,我拥有的功能之一是添加额外的文本框,然后尝试将文本框中的所有值添加到小计中。我遇到的问题(我认为)是在编译程序之前,编译器需要具有文本框ID。我还要为草率的变量名道歉,直到4AM为止,并且直到我刚使用任何变量时,我都尝试了我可能会想到的所有事情。我已经尝试了所有迭代,(最后看到了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 :(得分:0)

您可以通过{p>从Controls属性中按名称获取文本框

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

其中i是文本框编号。

索引器返回一个Control。但是,由于每个控件都有一个Text属性,因此您可以使用它而无需强制转换。

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

请参阅:Control.ControlCollection Class