2012-02-20 2 views
2

Это мой код. Но все мои текстовые поля имеют значение null.динамически создавать несколько текстовых полей C#

public void createTxtTeamNames() 
    { 
     TextBox[] txtTeamNames = new TextBox[teams]; 
     int i = 0; 
     foreach (TextBox txt in txtTeamNames) 
     { 
      string name = "TeamNumber" + i.ToString(); 
      txt.Name = name; 
      txt.Text = name; 
      txt.Location = new Point(172, 32 + (i * 28)); 
      txt.Visible = true; 
      i++; 
     } 
    } 

Спасибо за помощь.

+0

Что 'значение teams'? – Yuck

ответ

9

Запрос на создание массива только инициализирует элементы до null. Вам необходимо индивидуально их создать.

TextBox[] txtTeamNames = new TextBox[teams]; 
for (int i = 0; i < txtTeamNames.Length; i++) { 
    var txt = new TextBox(); 
    txtTeamNames[i] = txt; 
    txt.Name = name; 
    txt.Text = name; 
    txt.Location = new Point(172, 32 + (i * 28)); 
    txt.Visible = true; 
} 

Примечание: Поскольку несколько человек указали для того, чтобы этот код, чтобы иметь смысл вам нужно будет добавить каждый TextBox родителю Control

+1

Чтобы код имел какую-либо значимую цель, каждый экземпляр 'txt' также должен быть добавлен к некоторому родительскому элементу управления. – Yuck

+0

Вы не добавляете его в форму, вам нужно позвонить this.Controls.Add (txt); –

+1

@ SenadMeškin Да, это почти наверняка, что нужно делать OP. Но вопрос был более конкретным, поэтому я попытался это решить. – JaredPar

1

Вам необходимо инициализировать текстовое поле в начале цикла ,

Вам также необходимо использовать цикл for вместо foreach.

1

Вам нужны новые до ваших TextBoxes:

for (int i = 0; i < teams; i++) 
{ 
    txtTeamNames[i] = new TextBox(); 
    ... 
} 
0

Вы делаете это неправильно, вы должны добавить экземпляры TextBox в массив, а затем добавить его в форму. Вот как вы должны это делать.

public void createTxtTeamNames() 
     { 
      TextBox[] txtTeamNames = new TextBox[10]; 

for (int u = 0; u < txtTeamNames.Count(); u++) 
      { 
       txtTeamNames[u] = new TextBox(); 
      } 
      int i = 0; 
      foreach (TextBox txt in txtTeamNames) 
      { 
       string name = "TeamNumber" + i.ToString(); 

       txt.Name = name; 
       txt.Text = name; 
       txt.Location = new Point(0, 32 + (i * 28)); 
       txt.Visible = true; 
       this.Controls.Add(txt); 
       i++; 
      } 
     } 
0
private void button2_Click(object sender, EventArgs e) 
    { 
     TextBox tb = new TextBox(); 
     tb.Name = abc; 
     tb.Text = "" + i; 

     Point p = new Point(20 + i, 30 * i); 
     tb.Location = p; 
     this.Controls.Add(tb); 
     i++; 
    } 


    private void button3_Click(object sender, EventArgs e) 
    { 
     foreach (TextBox item in this.Controls.OfType<TextBox>()) 
     { 
      MessageBox.Show(item.Name + ": " + item.Text + "\\n"); 
     } 
    } 
Смежные вопросы