首页 > 解决方案 > 在动态创建的文本框中计算

问题描述

如何在另一个文本框中动态创建的 texbox 中添加值?例如,我有 6 个从 TextBox0 到 TextBox6 命名的文本框,我想将 TextBox0 中的值添加到 TextBox5,然后在 TextBox6 中设置该值。我怎样才能做到这一点?

这是我创建动态文本框的代码:

static int column = 0;
private void button1_Click(object sender, EventArgs e)
{
    int i = 0;               
    if (column > 0)
    {
        do
        {
            TextBox tb = new TextBox();
            tb.Text = "";
            tb.Name = "TextBox" + (i + column * 6);
            TextBox t = (TextBox)Controls["TextBox" + i.ToString()];
            Point p = new Point(15 + (column * 125), 5 + (i * 25));
            tb.Location = p;
            this.Controls.Add(tb);
            i++;
        } while (i <= 5);
    }
    else
    {
        do
        {
            TextBox tb = new TextBox();
            tb.Text = "";
            tb.Name = "TextBox" + i;
            TextBox t = (TextBox)Controls["TextBox" + i.ToString()];
            Point p = new Point(15, 5 + (i * 25));
            tb.Location = p;
            this.Controls.Add(tb);
            i++;
        } while (i <= 5);               
    }
    column++;
}

标签: c#winforms

解决方案


private const string _textBoxName = "TextBox";

方法 count textboxes 按给定的文本框 ID 范围求和。请注意,如果文本框文本/名称 ID 不是整数或

   private int Count(int from, int to)
            {
                int GetIdFromTextBox(TextBox textBox) => int.Parse(new string(textBox.Name.Skip(_textBoxName.Length).ToArray()));

                var textBoxes = Controls.OfType<TextBox>().ToList();
                var textBoxesWithIds = textBoxes.Select(textBox => (textBox: textBox, id: GetIdFromTextBox(textBox))).ToList();

                var sum = textBoxesWithIds.Where(x => x.id >= from && x.id <= to).Sum(x => int.Parse(x.textBox.Text));

                return sum;
            }

推荐阅读