2013-05-18 3 views
0

У меня есть кнопка при нажатии создает текстовые поля динамически:Получить текст из динамически созданного TextBox

 for (int i = 0; i < length; i++) 
     { 
     Name.Add(new TextBox()); 
     System.Drawing.Point locate = new System.Drawing.Point(137, 158 + i * 25); 
     (Name[i] as TextBox).Location = locate; 
     (Name[i] as TextBox).Size = new System.Drawing.Size(156, 20); 
     StartTab.Controls.Add(Name[i] as TextBox); 
     } 

Я хочу, чтобы получить текст, введенный в поле Имя [я] преобразовать в строку затем установить его на этикетках

+0

Когда вы хотите сделать это? В коде, который вы показываете, элементы управления еще не были пока еще показаны пользователю, поэтому пользователь не может в них что-либо вносить. – Guffa

+0

@ newStackExchangeInstance modname [i] = Имя [i] .ToString(); string evaluationName = modname [i]; – yeeeh

+0

Что такое объявленный тип «modname»? Вам нужно получить доступ к свойству .Text() для TextBox, например '(Name [i] как TextBox) .Text'. Вы можете попробовать: '(modname [i] as Label) .Text = (Name [i] как TextBox) .Text' –

ответ

3

Вы можете использовать Control.ControlCollection.Find.

ОБНОВЛЕНО:

TextBox txtName = (TextBox)this.Controls.Find("txtNameOfTextbox", true)[0]; 

if (txtName != null) 
{ 
    return txtName.Text; 
} 
+0

его говорит:« Не содержит определения для FindControl » – yeeeh

+0

-1 Это ** winform ** apllication. – I4V

+0

Вы правы @ I4V, спасибо за предупреждение. Обновлен мой ответ. Вы можете попробовать это? –

0

Вы не говорите, что тип, который Name есть, это выглядит как список какой-то. Попробуйте использовать List<TextBox> таким образом, чтобы вы могли непосредственно получить доступ к объектам TextBox. Что-то вроде этого. Я также не уверен, что управление этим StartTab, поэтому я просто использовал Panel для этого тестового кода. (Вы должны также знать, что Name маскирует форма в Name имущество, поэтому я изменил свой список name)

public partial class Form1 : Form 
{ 
    List<TextBox> name = new List<TextBox>(); 
    int length = 5; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     for (int i = 0; i < length; i++) 
     { 
      name.Add(new TextBox() { Location = new System.Drawing.Point(137, 158 + i * 25), 
            Size = new System.Drawing.Size(156, 20) }); 
      StartTab.Controls.Add(name[i]); 
     } 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     for (int i = 0; i < length; i++) 
     { 
      StartTab.Controls.Add(new Label() {Location = new System.Drawing.Point(name[i].Location.X + name[i].Width + 20, 
               name[i].Location.Y), 
               Text = name[i].Text, 
               AutoSize = true }); 
     } 
    } 
} 
Смежные вопросы