簡體   English   中英

在C#中遍歷tabcontrol的選項卡

[英]Looping through tabpages of tabcontrol in c#

我試圖在C#中遍歷tabcontrol的選項卡。 每個選項卡頁都有多個文本框。 目的是總結這些文本框的所有值。

double sum = 0;
foreach(TabPage tbp in tabControl1.TabPages)
{
    foreach(System.Windows.Forms.Control c in tbp.Controls)
    {
            if (c.ToString() == "TextBox")
            {
                sum += Convert.ToDouble(c.Text);
            }
        }
    }

當我執行此代碼時,即使我的TabControl中有一個TabPage,第一個foreach循環也會被輸入3次。 此外,如果沒有輸入if語句,那么似乎也有問題。

此代碼(C#7)使您可以安全地對選項卡控件中的所有文本框值進行求和,包括嵌套在子容器控件中的文本框(例如:面板中的文本框和選項卡頁面中的面板)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM