2015-09-28 1 views
0

Я создаю динамическое текстовое поле при нажатии кнопки внутри панели и сохраняю номер и хочу получить его текст и сделать общее количество этого номера, как я могу это сделать?Как получить динамическое созданное значение текстового поля с панели в C# при нажатии кнопки

Ниже мой код для генерации текста коробки

 private void btnMaterialAdd_Click(object sender, EventArgs e) 

     { 
      TextBox[] txtTeamNames = new TextBox[100]; 
      txtTeamNames[i] = new TextBox(); 
      string name = "TeamNumber" + i.ToString(); 
      txtTeamNames[i].Location = new Point(1, i * 30 ); 
      txtTeamNames[i].Width = 30; 
      txtTeamNames[i].Name = "ID" + i; 
      txtTeamNames[i].Visible = true; 
      int num = i + 1 ; 
      txtTeamNames[i].Text = num.ToString(); 
      panel1.Controls.Add(txtTeamNames[i]); 

     } 

Как подсчитать общую стоимость каждого текстового поля и отображения?

ответ

1

Избавиться от массива и использовать список на уровне класса (не локальная переменная в методе):

private List<TextBox> TextBoxes = new List<TextBox>(); 

    private void btnMaterialAdd_Click(object sender, EventArgs e) 
    { 
     TextBox tb = new TextBox(); 
     int i = TextBoxes.Count + 1; 
     tb.Location = new Point(1, i * 30); 
     tb.Width = 30; 
     tb.Name = "ID" + i; 
     tb.Text = i.ToString(); 
     TextBoxes.Add(tb); 
     panel1.Controls.Add(tb); 
    } 

Теперь вы можете выполнить пошаговый список когда, чтобы получить в общей сложности:

private void btnTotal_Click(object sender, EventArgs e) 
    { 
     int value; 
     int total = 0; 
     foreach (TextBox tb in TextBoxes) 
     { 
      if (int.TryParse(tb.Text, out value)) 
      { 
       total = total + value; 
      } 
      else 
      { 
       MessageBox.Show(tb.Name + " = " + tb.Text, "Invalid Value"); 
      } 
     } 
     MessageBox.Show("total = " + total.ToString()); 
    } 
+0

Это работы Спасибо .... –