我对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 :(得分: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
属性,否则您将从第一个使用指定名称找到的控件中获取文本。