[英]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.