2014-09-06 5 views
-1

У меня есть программа с несколькими методами. Мы создаем все элементы управления с помощью методов. Один из способов создания textBox. Это как:Обнаружить текст нескольких текстовых полей

private TextBox textBox1; 

    public void CreateTextBox() 
    { 

     this.textBox1 = new System.Windows.Forms.TextBox(); 
     // 
     // textBox1 
     // 
     this.textBox1.Location = new System.Drawing.Point(100, Position); 
     this.textBox1.Name = "textBox1"; 
     this.textBox1.Size = new System.Drawing.Size(100, 20); 
     Position += 30; 
     this.Controls.Add(this.textBox1); 

    } 

Есть несколько TextBoxes в форме (подсчет текстового поля может изменяться в пределах от 10 до 20). Итак, если я хочу создать несколько Textboxes, вызывать методы, как:

 CreateTextBox(); 
     CreateTextBox(); 
     CreateTextBox(); 

Если я хочу иметь текст этого текстовые поля, код, как это вернуть мне последний TextBox текст:

  MessageBox.Show(textBox1.Text); 

Моя проблема: ,, Как я могу определить текст первого вызова CreateTextBox(), а второй - CreateTextBox()? Спасибо и за прочитать

+0

сделать код возврата TextBox и хранить их в списке. –

+0

Или просто дайте им разные имена. –

+0

Или используйте «тег» и проведите через них ... Что бы ни имело смысл ... – walther

ответ

1

Вы можете использовать массив, содержащий все TextBoxes:

var form = new Form(); 

var boxes = new TextBox[10]; 
for (int i = 0; i < boxes.Length; i++) 
{ 
    var box = new TextBox(); 
    box.Location = new Point(10, 30 + 25 * i); 
    box.Size = new Size(100, 20); 
    form.Controls.Add(box); 

    boxes[i] = box; 
} 

var button = new Button(); 
button.Text = "Button"; 
button.Click += (o, e) => 
{ 
    var message = String.Join(", ", boxes.Select(tb => tb.Text)); 
    MessageBox.Show(message); 
}; 
form.Controls.Add(button); 

Application.Run(form); 
+0

Да ... Это правильно . Благодарю вас <3 – Sinaw

Смежные вопросы