2013-03-23 46 views
0

我有一个文本框和组合框的数组,我想根据我所做的循环设置它们的值。 preinput1和postinput1是文本框,但preinput5和postinput5是组合框。正试图将组合框称为文本框的错误:“TextBox tb”。c#将组合框和texbox的值设置在同一个foreach循环中

var StringInput = new object[] { preInput1, preInput5, postInput1, postInput5}; 
    int stringCount1 = 0; 
    int toto = (ArrayCount + StringInput.Length); 

    foreach (TextBox tb in StringInput) 
    { 
     tb.Text = Convert.ToString(energyCalculation.Cells[place[xCSV]].Value); 
     xCSV++; 
     //stringCount1++; 
     ArrayCount++; 
    } 

我想避免打破它一个接一个地工作。还有什么我可以写而不是TextBox,或者有更好的方法。

干杯,

回答

2

尝试以下操作:

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

完美!实际上我只是将你的声明从'var c'改为'Control c',它也起作用了! – Pat 2013-03-23 07:36:30

+1

@Pat这很好。将数组类型更改为Control []而不是'object []'的原因是为了停止添加非'Control'类型的任何其他类型的对象,因此会为您创建相同的问题。 – rhughes 2013-03-23 07:39:12

0

试试这个:

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++; 
} 
相关问题