使用动态创建的TextBoxes中的文本

时间:2013-02-09 10:06:59

标签: c# user-interface textbox

我对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);
    }

如何将用户键入的文本拉入这些新生成的文本框中,以将其用作不同函数的参数(将由不同的按钮调用)?我对此很新,可以使用帮助。

提前致谢。

4 个答案:

答案 0 :(得分:1)

var matches = this.Controls.Find("txtDynamic2", true);
TextBox tx2 = matches[0] as TextBox;            
string yourtext = tx2.Text;

这将返回名称为txtDynamic2的控件数组,在您的情况下,第一个控件将是您要查找的控件,除非您创建更多具有相同名称的控件。 这将允许您在找到文本框时完全访问该文本框。

答案 1 :(得分:1)

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

答案 2 :(得分: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
    }
}

答案 3 :(得分:0)

你可以很容易地做到:

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

请记住确保您的控件具有唯一 Name属性,否则您将从第一个使用指定名称找到的控件中获取文本。