You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Forms动态文本框值存储及求和均值计算问题

解决方案:动态管理文本框并计算总和与平均值

核心思路

用**List<TextBox>**全局存储所有动态生成的文本框,它支持动态添加元素,完美解决数组长度固定的问题。同时添加输入验证,避免非数字输入导致程序崩溃。


步骤1:全局声明存储文本框的List

在窗体类中定义全局List,用于保存所有动态生成的文本框:

// 全局存储所有动态生成的文本框
private List<TextBox> dynamicTextBoxes = new List<TextBox>();

步骤2:修改文本框生成逻辑,加入List管理

每次创建新文本框时加入List,同时在重新生成前清空旧控件和List,避免重复:

int newtextboxn = 8;    
int alingment = 200;

public TextBox addnewtextbox() 
{
    TextBox textbox = new TextBox();
    this.Controls.Add(textbox);
    // 将新文本框加入全局List
    dynamicTextBoxes.Add(textbox);

    if (newtextboxn % 18 == 0)
    {
        alingment += 200;
        newtextboxn = 8;
        textbox.Top = newtextboxn * 27;
        textbox.Left = alingment;
    }
    else
    {
        textbox.Top = newtextboxn * 27;
        textbox.Left = alingment;
    }
    newtextboxn = newtextboxn + 1;
    return textbox;
}

public void printTextbox(int radius) 
{   
    // 清空之前生成的文本框和List,避免重复
    foreach (var tb in dynamicTextBoxes)
    {
        this.Controls.Remove(tb);
        tb.Dispose();
    }
    dynamicTextBoxes.Clear();
    // 重置布局参数,防止下次生成位置错乱
    newtextboxn = 8;
    alingment = 200;

    for (int i = 0; i < radius; i++)
    {
        addnewtextbox();
    }
}

private void printTheBox_Click(object sender, EventArgs e) 
{
    // 验证输入是否为有效正整数
    if (int.TryParse(numberofnumbers.Text, out int radius) && radius > 0)
    {
        printTextbox(radius);
    }
    else
    {
        MessageBox.Show("请输入有效的正整数");
    }
}

步骤3:修改计算逻辑,遍历List统计数值

遍历全局List,提取每个文本框的有效数值,计算总和与平均值:

private void doTheMath_Click(object sender, EventArgs e) 
{ 
    int sum = 0;
    int validInputCount = 0;

    foreach (var tb in dynamicTextBoxes)
    {
        // 验证输入是否为有效整数
        if (int.TryParse(tb.Text, out int num))
        {
            sum += num;
            validInputCount++;
        }
        else
        {
            MessageBox.Show($"文本框内容「{tb.Text}」不是有效整数,将被忽略");
        }
    }

    // 处理无有效输入的情况
    if (validInputCount == 0)
    {
        total.Text = "0";
        averagee.Text = "0";
        MessageBox.Show("没有有效的数字输入");
        return;
    }

    double average = (double)sum / validInputCount;
    total.Text = sum.ToString();
    averagee.Text = average.ToString("F2"); // 保留两位小数,显示更友好
}

内容的提问来源于stack exchange,提问作者hexxetexxeh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:05:45