C#自己遍历组框

时间:2016-09-20 14:53:33

标签: c# groupbox

我一直在四处寻找,我真的发现了任何有意义的东西。

我想要做的是,只需点击一下按钮即可在组框之间进行更改。

我所拥有的是一个包含32个groupbox容器的Windows窗体,每个容器中有12个文本框,一些文本框将收到一个数字,其余的将保持为空;现在下面的代码工作,我可以复制和粘贴31次:

int GP =1

它检查GROUPBOX1中的所有文本框并将所有值与值一起添加,并忽略空文本框。

我想要做的是,点击一个按钮,将+1增加foreach,然后移动到下一个组框及其文本框集,以便我可以重复使用代码在foreach (TextBox x in GROUPBOX+GP+.Controls.OfType<TextBox>()) { int A1 = 0; int.TryParse(x.Text, out A1); TOTAL += A1; //defined outside of the method } 循环中,看起来像这样:

+GP+

其中int GP =1代表this.Controls["GROUPBOX"+box_number].Controls["LABEL"+label_prefix+"_"+label_number+"_LBL"].Text = valueToDisplayInLabel.ToString();及其后续增量。

现在我从以下方面得到了这个想法: int

(使用适当的分配 foreach(GroupBox gb in Controls.OfType<GroupBox>()) { foreach(TextBox tb in gb.Controls.OfType<TextBox>()) { int A1 = 0; int.TryParse(tb.Text, out A1); TOTAL += A1; //defined outside of the method } } )将值分配给不同组框中的某些标签。 可以这样做吗?已经创建了所有组框和文本框。

我想要完成的是,接收号码的文本框将全部加在一起,然后该值将存储在数据库中,并添加到所有其他&#34;总计&#34;并存储在数据库中。

List<int> TOTAL = new List<int>();

这很好用,但它不允许我得到每个组合框的组合文本框的总数,就像我想单独存储每个groupbox总和并在稍后阶段将它们一起添加,其中这需要所有在组框中的文本框并将它们转储到列表中,iv添加了TOTAL.Insert(0, A1);int GB1TOT, GB2TOT以尝试让我工作,但现在它将所有文本框值转储到列表中。

基本上我正在寻找int TOTAL = GB1TOT + GB2TOT等等,然后{{1}}

2 个答案:

答案 0 :(得分:2)

使用两个循环?

        foreach(GroupBox gb in Controls.OfType<GroupBox>())
        {
            foreach(TextBox tb in gb.Controls.OfType<TextBox>())
            {
                int A1 = 0;
                int.TryParse(tb.Text, out A1);
                TOTAL += A1;   //defined outside of the method
            }
        }

答案 1 :(得分:0)

这是你想要的吗?将每个GroupBox的总数存储到List GBtotal中。然后你可以通过总结得到总数。

int Total;
List<int> GBTotal = new List<int>()
foreach(GroupBox gb in Controls.OfType<GroupBox>())
{
    int temp = 0;
    foreach(TextBox tb in gb.Controls.OfType<TextBox>())
    {
        int A1 = 0;
        if(int.TryParse(tb.Text, out A1))
        {
           temp += A1;
        }
    }
    GBTotal.Add(temp);
}
Total = GBTotal.Sum();

技术上可以使用

Total = GBTotal[0] + GBTotal[1] + ....

或使用循环来获得总数