在c#中通过tabcontrol的tabpages循环

时间:2018-04-12 06:57:06

标签: c# winforms tabcontrol

我正在尝试遍历c#中tabcontrol的tabpages。每个标签页都有多个文本框。目的是总结这些文本框的所有值。

"testObj": { "myArr": [ {"type": "x", name:"test1"}, {"type": "y", name:"test2"}] }

当我执行此代码时,即使我的TabControl中有一个TabPage,第一个foreach循环也会输入三次。此外,没有输入if语句,因此似乎也有问题。

1 个答案:

答案 0 :(得分:0)

此代码(C#7)允许您对选项卡控件中的所有文本框值进行安全求和,包括嵌套在子容器控件中的文本框(例如:面板中的文本框和选项卡页面中的面板)< / p>

    private double SumTextBoxesValues()
    {
        double sum = 0;
        foreach (TabPage tbp in tabControl1.TabPages)
        {
            var textBoxes = GetAllTextBoxes(tbp);

            foreach (var textBox in textBoxes)
            {
                if(double.TryParse(textBox.Text, out double value))
                    sum += value;
            }

        }

        return sum;
    }

    private static IEnumerable<TextBox> GetAllTextBoxes(Control container)
    {
        var controlList = new List<TextBox>();
        foreach (Control c in container.Controls)
        {
            controlList.AddRange(GetAllTextBoxes(c));

            if(c is TextBox box)
                controlList.Add(box);
        }
        return controlList;
    }