2013-02-09 75 views
1

我有一个关于C#中的文本框的问题。我做了一个按钮,点击后,将创建文本框:使用动态创建的文本框中的文本

private void helloButton_Click(object sender, EventArgs e) 
    { 
     TextBox txtRun = new TextBox(); 
     TextBox txtRun2 = new TextBox(); 
     txtRun2.Name = "txtDynamic2" + c++; 
     txtRun.Name = "txtDynamic" + c++; 
     txtRun.Location = new System.Drawing.Point(40, 50 + (20 * c)); 
     txtRun2.Location = new System.Drawing.Point(250, 50 + (20 * c)); 
     txtRun2.ReadOnly = true; 

     txtRun.Size = new System.Drawing.Size(200, 25); 
     txtRun2.Size = new System.Drawing.Size(200, 25); 
     this.Controls.Add(txtRun); 
     this.Controls.Add(txtRun2); 
    } 

我怎么能拉用户类型为这些新生成的文本框,使用它作为一个不同的函数参数(其将被称为该文本一个不同的按钮)?我很新,可以使用帮助。

在此先感谢。

回答

0

如果你想在其他方法中使用实例化的文本框,那么你可以通过将它们传递给方法或将它们存储为类的成员来实现。

将它们存储在下面的类中的示例。

public class YourForm 
{ 
    private TextBox txtRun; 
    private TextBox txtRun2; 

    private void helloButton_Click(object sender, EventArgs e) 
    { 
     txtRun = new TextBox(); 
     txtRun2 = new TextBox(); 

     // removed less interesting initialization for readability 

     this.Controls.Add(txtRun); 
     this.Controls.Add(txtRun2); 
    } 

    public void DoStuffWithTextBoxes() 
    { 
     if (txtRun != null && txtRun2 != null) 
     { 
      // Retrieve text value and pass the values to another method 
      SomeOtherMagicMethod(txtRun.Text, txtRun2.Text); 
     } 
    } 

    private void SomeOtherMagicMethod(string txtRunText, string txtRun2Text) 
    { 
     // Do more magic 
    } 
} 
1
var matches = this.Controls.Find("txtDynamic2", true); 
TextBox tx2 = matches[0] as TextBox;    
string yourtext = tx2.Text; 

这将通过名称返回的控件数组txtDynamic2,在你的情况下,第一个是你正在寻找的,除非你创建具有相同名称的多个控件。 这将允许您完全访问文本框,如果你找到它。

0

你可以做到这一点很容易:

//get the text from a control named "txtDynamic" 
string text = this.Controls["txtDynamic"].Text; 

只要记住,以确保您的控件具有独特Name财产,否则你会得到一个与指定名称找到的第一个控件的文本。

1
var text = (TextBox)this.Controls.Find("txtDynamic2", true)[0]; 
+0

(文本框)this.Controls.Find( “txtDynamic2”,真)(0)应为(文本框)this.Controls.Find( “txtDynamic2”,真)[0] – Igoy 2013-02-09 11:33:01

+0

哦..是,你甚至不给我一段时间修改? ':D' – spajce 2013-02-09 11:52:51

+1

我现在就给它,它有时会奇怪地发生:),新手! – Igoy 2013-02-09 11:56:16