c#在同一foreach循环中设置combobox和texbox的值
我有一个文本框和组合框数组,我想根据循环设置它们的值。preinput1和postinput1是文本框,而preinput5和postinput5是组合框。尝试将组合框引用为textbox时出错:“textbox tb” 我不想为了一个接一个的解决问题而把它拆开。我还能写什么来代替文本框,或者有更好的方法吗 干杯,尝试以下方法:c#在同一foreach循环中设置combobox和texbox的值,c#,arrays,combobox,textbox,foreach,C#,Arrays,Combobox,Textbox,Foreach,我有一个文本框和组合框数组,我想根据循环设置它们的值。preinput1和postinput1是文本框,而preinput5和postinput5是组合框。尝试将组合框引用为textbox时出错:“textbox tb” 我不想为了一个接一个的解决问题而把它拆开。我还能写什么来代替文本框,或者有更好的方法吗 干杯,尝试以下方法: var StringInput = new Control[] { preInput1, preInput5, postInput1, postInput5}; int
var StringInput = new Control[] { preInput1, preInput5, postInput1, postInput5};
int stringCount1 = 0;
int toto = (ArrayCount + StringInput.Length);
foreach (var c in StringInput)
{
c.Text = Convert.ToString(energyCalculation.Cells[place[xCSV]].Value);
xCSV++;
//stringCount1++;
ArrayCount++;
}
试试这个:
foreach (object control in StringInput)
{
var value = Convert.ToString(energyCalculation.Cells[place[xCSV]].Value);
var textBox = control as TextBox;
if (textBox != null)
{
textBox.Text = value;
}
else
{
var comboBox = control as ComboBox;
if (comboBox != null)
{
comboBox.Text = value;
}
}
xCSV++;
//stringCount1++;
ArrayCount++;
}
完美的实际上,我只是将c的声明从'var c'更改为'Control c',并且它也起了作用@帕特:那很好。将数组类型更改为
Control[]
而不是object[]
的原因是为了停止添加任何其他类型的非“Control”类型的对象,从而为您造成同样的问题。
foreach (object control in StringInput)
{
var value = Convert.ToString(energyCalculation.Cells[place[xCSV]].Value);
var textBox = control as TextBox;
if (textBox != null)
{
textBox.Text = value;
}
else
{
var comboBox = control as ComboBox;
if (comboBox != null)
{
comboBox.Text = value;
}
}
xCSV++;
//stringCount1++;
ArrayCount++;
}