2011-11-05 50 views
0

我有幾個文本框,我想遍歷它們並檢查它們是否包含值,如果它們是,則將其放入數組中。文本框的值到數組

該文本框被稱爲txtText1,txtText2 .... txtText12。 這是我走到這一步:

for (int i = 1; i < 13; i++) 
{ 
    if(txtText[i] != String.Empty) 
    { 
     TextArray[i] = Convert.ToString(txtText[i].Text); 
    } 
} 

..但txtText [i]是不允許的。

我該如何循環瀏覽這些框?

回答

1

理想情況下,通過將它們放入數組中來開始,而不是使用幾個單獨的變量。基本上你想要一個文本框的集合,對吧?所以使用集合類型。

可以使用

TextBox tb = (TextBox) Controls["txtText" + i]; 

假設它們的ID已正確指定,但我個人會用這樣的事情設計集合

0

假設txtText數組包含你可以做到這一點

var textArray=txtText.Where(t=>!string.IsNullOrEmpty(t.Text)).Select(t=>t.Text).ToArray(); 
0

我不認爲你可以在設計作出這樣的數組對象不再到文本框對象的引用。

無論如何你可以做的是:你可以創建一個類變量IEnumerable<Textbox> _textboxes,並用構造函數中的所有文本框填充它。

然後後面的代碼中,你可以做

foreach(var textbox in _textboxes) 
{ 
    Console.WriteLine(textbox.Text); // just an example, idk what you want to do with em 
} 
0

你可以嘗試這樣的....

List<string> values = new List<string>(); 
    foreach(Control c in this.Controls) 
    { 
     if(c is TextBox) 
     { 

      TextBox tb = (TextBox)c; 
      values.Add(tb.Text); 
     } 
    } 
    string[] array = values.ToArray(); 
0

嘗試創建文本框的列表,而不是像這樣的陣列:

List<TextBox> myTextboxList = new List<TextBox>(); 
myTextBoxList.Add(TextBox1); 
myTextBoxList.Add(TextBox2); 
mytextBoxList.Add(TextBox3); 

然後使用foreach像這樣一次訪問每個項目:

Foreach (TextBox item in myTextboxList) { 
    // Do something here, for example you can: 
    item.Text = "My text goes here"; 
}