C# 循环中的组合框
我的表格上有50多个组合框,其中的项目货币为美元、欧元。每种货币都有自己的价格文本框 我想做的是基于货币的价格总和。 例如,如果我有20美元,我想得到这20个价格值的总和。C# 循环中的组合框,c#,winforms,C#,Winforms,我的表格上有50多个组合框,其中的项目货币为美元、欧元。每种货币都有自己的价格文本框 我想做的是基于货币的价格总和。 例如,如果我有20美元,我想得到这20个价格值的总和。 如何循环组合框?您可以使用组合框的.Text属性,正如@AYETY所建议的,但我认为这取决于您如何填充它们,以及您是否愿意使用值而不是文本,等等 int i = 0; foreach (Control c in this.Controls) { if (c is ComboBox) {
如何循环组合框?您可以使用组合框的.Text属性,正如@AYETY所建议的,但我认为这取决于您如何填充它们,以及您是否愿意使用值而不是文本,等等
int i = 0;
foreach (Control c in this.Controls)
{
if (c is ComboBox)
{
if (c.Text == 'USD')
i++;
}
}
无论如何,您没有说明组合框在表单上的位置,因此如果它们放在容器中,您需要递归地搜索表单上的控件,例如
public IEnumerable<Control> GetChildControls(Control parentControl)
{
List<Control> controls = new List<Control>();
foreach (Control child in parentControl.Controls)
{
controls.AddRange(GetChildControls(child));
}
controls.Add(parentControl);
return controls;
}
…将组合框添加到数组列表中,然后在数组列表中循环。是组合框还是文本框?浏览50个组合框可能有点讨厌UI-wise@AYETY显示示例数据组合框和相关文本框是否在一个面板中?或者通过代码进行关联?否则,仅仅根据表格上的位置来匹配它们会变得很棘手。
private void SumCurrencies()
{
var controls = GetChildControls(this);
foreach (var control in controls.Where(c => c is ComboBox))
{
if (control.Text == "USD")
{
// do something
}
else if (control.Text == "GBP")
{
// do something
}
else if (control.Text == "EUR")
{
// do something
}
}
}