Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取动态创建的文本框的Controll.Name_C#_Asp.net_Textbox_Windows Forms Designer - Fatal编程技术网

C# 获取动态创建的文本框的Controll.Name

C# 获取动态创建的文本框的Controll.Name,c#,asp.net,textbox,windows-forms-designer,C#,Asp.net,Textbox,Windows Forms Designer,我目前正在创建一个小应用程序,根据用户希望创建的数量,在其中创建多个文本框控件到一个面板。 之后,我想得到这个文本框的文本,但为此,我确实需要控件名。也许你们中的一个可以告诉我如何找到每个创建的文本框的控件名 感谢您的帮助。此代码从表格布局面板1中选取文本框1,将其从控件强制转换为文本框,并获取文本属性: string s = ((TextBox)tableLayoutPanel1.Controls["TxtBox1"]).Text; 如果需要所有文本框,请在文本框上迭代: string[]

我目前正在创建一个小应用程序,根据用户希望创建的数量,在其中创建多个文本框控件到一个面板。 之后,我想得到这个文本框的文本,但为此,我确实需要控件名。也许你们中的一个可以告诉我如何找到每个创建的文本框的控件名


感谢您的帮助。

此代码从
表格布局面板1
中选取
文本框1
,将其从控件强制转换为
文本框
,并获取
文本
属性:

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;
string[]t=新字符串[4];

对于(int i=0;i我很确定您会以不同的方式对待每个文本框。例如,一个文本框的文本值将代表名字,下一个代表姓氏,依此类推。因此,您不仅需要文本框的名称,还需要对每个文本框执行不同的操作。下面是一些代码,我在循环中生成一些文本框。我给它们命名和命名然后我向它们添加一个事件处理程序。在处理程序中,我决定如何处理为文本输入的值。您应该根据需要为文本框提供更多描述性名称

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;
    }
}
public Form1()
{
初始化组件();
对于(int i=0;i<5;i++)
{
var txtBox=新文本框();
txtBox.Name=“TextBox”+i;
txtBox.TextChanged+=txtBox\u TextChanged;
this.tableLayoutPanel1.Controls.Add(txtBox);
}
}
私有void TxtBox_TextChanged(对象发送方,事件参数e)
{
var txtBox=发送方作为文本框;
string firstName=string.Empty;
string lastName=string.Empty;
开关(txtBox.Name)
{
案例“TextBox1”:
firstName=txtBox.Text;
打破
案例“TextBox2”:
lastName=txtBox.Text;
打破
//这里有更多的案例,但你明白了。。。
违约:
打破
}
}

为什么不在创建文本框时显式设置它们的名称?尽管我不知道为什么在不知道有多少文本框的情况下需要按名称访问它们。只需枚举面板的子项即可获得文本框。或者在创建文本框时将其存储在数组中,然后通过数组访问它们。