我目前正在创建一个小应用程序,我创建多个文本框控件到一个面板,具体取决于想要创建多少用户。 之后,我想获取这个文本框的文本,但为此我需要Contoll名称。也许你可以告诉我如何找出每个创建的TextBox的控制名称。获取动态创建的文本框的Controll.Name
感谢您的帮助。
我目前正在创建一个小应用程序,我创建多个文本框控件到一个面板,具体取决于想要创建多少用户。 之后,我想获取这个文本框的文本,但为此我需要Contoll名称。也许你可以告诉我如何找出每个创建的TextBox的控制名称。获取动态创建的文本框的Controll.Name
感谢您的帮助。
我很确定你会以不同的方式处理每个文本框。例如,一个文本框的文本值将用于名字,下一个用于姓名等。所以你不仅需要文本框的名字,而且还要为每一个做不同的事情。这里是我在循环中生成一些文本框的一些代码。我给他们的名字,然后我给他们添加一个事件处理程序。在处理程序中,我将决定如何处理为文本输入的值。您应该根据您的需要为文本框提供更多描述性名称
public Form1()
{
InitializeComponent();
for (int i = 0; i < 5; i++)
{
var txtBox = new TextBox();
txtBox.Name = "TextBox" + i;
txtBox.TextChanged += TxtBox_TextChanged;
this.tableLayoutPanel1.Controls.Add(txtBox);
}
}
private void TxtBox_TextChanged(object sender, EventArgs e)
{
var txtBox = sender as TextBox;
string firstName = string.Empty;
string lastName = string.Empty;
switch (txtBox.Name)
{
case "TextBox1":
firstName = txtBox.Text;
break;
case "TextBox2":
lastName = txtBox.Text;
break;
// more cases here but you get the point...
default:
break;
}
}
此代码采用主从tableLayoutPanel1
textbox1
,从控制投它TextBox
并采取Text
属性:
string s = ((TextBox)tableLayoutPanel1.Controls["TxtBox1"]).Text;
如果你需要他们所有的,然后遍历文本框:
string[] t = new string[4];
for(int i=0; i<4; i++)
t[i] = ((TextBox)tableLayoutPanel1.Controls["TxtBox"+(i+1).ToString()]).Text;
为什么不在创建文本框时明确指定文本框的名称?虽然,我不确定为什么你甚至不知道为什么你需要通过名字访问它们。只需枚举面板的子项即可获取文本框。或者在创建它们并通过数组访问它们时将它们存储在数组中。 – itsme86