我正在尝试遍历c#中tabcontrol的tabpages。每个标签页都有多个文本框。目的是总结这些文本框的所有值。
"testObj": { "myArr": [ {"type": "x", name:"test1"}, {"type": "y", name:"test2"}] }
当我执行此代码时,即使我的TabControl中有一个TabPage,第一个foreach循环也会输入三次。此外,没有输入if语句,因此似乎也有问题。
答案 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;
}