0

我创建了一个动态 UI,显示用户添加到他们的选择中的每个模块以及模块名称下对该模块的所有评估,所有数据都保存在数组列表中 - 包括作为文本框和标签的对象。

这是它的样子: http ://www.4shared.com/photo/fullsize/Ja3jHpRJ/screen1.html

然后用户应该为每个评估输入他们的分数并且计算按钮应该计算他们对每个模块的总体分数在这个阶段我只是将分数加在一起。当只添加一个模块时,该程序运行良好,但是当有更多模块时,它似乎认为 TextBox 是空的,即使我用数字填充它们。

这是我的代码

private void calculateButton_Click(object sender, EventArgs e)

    {
        int modLength = dat.ModuleTitle.Count;
        int modAsses = 0;
        int loopCount = 0;

        for (int i = 0; i < modLength; i++)
        {

            int total = 0;

            if ((textboxComputer[loopCount] as TextBox).Text == "")
            {
                Console.WriteLine("!!!!!");
            }
            else
            {
                modAsses = int.Parse(dat.ModuleAssessNum[i].ToString());
                for (int y = 0; y < modAsses; y++)
                {

                    total = total + int.Parse((textboxComputer[loopCount] as TextBox).Text.ToString());

                    loopCount = loopCount + 1;
                }

                Console.WriteLine(total);
            }
        }
    }  

当我添加两个或更多模块时,它会显示“!!!!!” 消息,但计算添加的第一个模块的标记。

这是一些输出 http://www.4shared.com/photo/fullsize/PlY29BMQ/screen2.html

4

2 回答 2

0

您的代码有问题,可能很多错误(变量名称除外)。

看看你的loopCount变量——你只会有条件地在你的循环中改变它,但你总是在循环的开始(你做的地方textboxComputer[loopCount])使用它。

那么预期的行为是什么?如果你第一次进入循环,如果你进入你的“其他”部分,你可以按照你说的打印总数,但是你也改变了 loopCount 变量,一旦你到达Console.WriteLine("!!!!!");你就永远不会再改变它 - 所以你的迭代会表现相同。

于 2012-05-02T12:20:18.433 回答
0

您需要确保在屏幕上创建额外动态元素的代码作为页面加载的一部分被调用,以便视图状态被插入回元素中并且可以由您的代码读回。

于 2012-05-02T12:19:41.273 回答