c#遍历组框本身

本文关键字:遍历 | 更新日期: 2023-09-27 18:07:50

我四处找了找,并没有找到任何有意义的东西。

我想做的是在点击按钮时在组框之间进行更改。

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

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

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

我想做的是,点击一个按钮,是增加int GP =1+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
        }
    }

这是伟大的,但它并不允许我把总数每组框的文本框,就像我想单独存储每个groupbox总在稍后的阶段,并将它们添加在一起,这需要所有的文本框,在框组和转储一个列表,iv List<int> TOTAL = new List<int>();TOTAL.Insert(0, A1);试图使这项工作对我来说,但现在它倾倒所有文本框值列表。

我在找int GB1TOT, GB2TOT等等然后是int TOTAL = GB1TOT + GB2TOT

c#遍历组框本身

使用两个循环?

        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
            }
        }

这是你想要的吗?将每个组框的总数存储到列表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] + ....

或者使用循环来获取总