获取动态生成TextBox控件的文本? [英] Get text of dynamically generated TextBox controls?
问题描述
for(int i = 0; i < numberOfFields; i++)
{
TextBox generatedField = new TextBox();
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;
}
生成文本框后,我怎么能找出被输入到他们吗?
After generating the TextBoxes, how can I find out what was typed into them?
推荐答案
您需要设置名称
您的控件,那么你就可以通过名称访问它们是这样的:
You need to set Name
of your controls, then you can access them by name this way:
创建的控制和分配名称:
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);
一些注意事项:
唯一名称:的注意生成唯一的名称
Unique Names: Pay attention to generate unique names.
空检查:的您可能希望 VAR TXT之后添加空检查=(文本框)panel1.Controls [someName_1];
另一个选择:的:您可以使用 this.Controls .Find
结果
。您也可以使用此代码,这将返回一个文本框
与的名称someName_1
:
var txt = this.Controls.Find("someName_1", true).Cast<TextBox>().FirstOrDefault();
处理事件:的:您可以添加框TextChanged
事件结果
另一件事可能对你有用,是加入框TextChanged
创建控件时,事件:
Handling Events: You can add TextChanged
event
Another thing you may find useful, is adding TextChanged
event when creating controls:
generatedField.TextChanged += generatedField_TextChanged;
这样,你应该在形式上此方法:
This way, you should have this method in form:
void generatedField_TextChanged(object sender, EventArgs e)
{
var txt = (TextBox)sender;
// do what you need with txt.Text and other properties
}
这篇关于获取动态生成TextBox控件的文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!