你需要设置Name
您的控件,然后您可以通过名称访问它们:
创建控件并分配名称:
for(int i = 0; i < numberOfFields; i++)
{
TextBox generatedField = new TextBox();
generatedField.Name = "someName_" + i.ToString();
generatedField.Text = "Please enter Field Report ID Here";
generatedField.Width = 176;
generatedField.Location = new Point(pointX, pointY);
panel1.Controls.Add(generatedField);
panel1.Show();
pointY += 25;
}
查找并使用控件:
var txt = (TextBox)panel1.Controls["someName_1"];
MessageBox.Show(txt.Text);
一些注意事项:
独特的名称:注意生成唯一的名称。
空值检查:您可能需要在之后添加空检查var txt = (TextBox)panel1.Controls["someName_1"];
另外一个选择:您可以使用this.Controls.Find
您还可以使用此代码,它将返回TextBox
姓名为someName_1
:
var txt = this.Controls.Find("someName_1", true).Cast<TextBox>().FirstOrDefault();
处理事件:你可以加TextChanged
event
您可能会发现有用的另一件事是添加TextChanged
创建控件时的事件:
generatedField.TextChanged += generatedField_TextChanged;
这样,您应该以以下形式拥有此方法:
void generatedField_TextChanged(object sender, EventArgs e)
{
var txt = (TextBox)sender;
// do what you need with txt.Text and other properties
}