Get value of dynamically created textbox

风流意气都作罢 提交于 2019-12-22 16:37:01

问题


I'm in a bit of a pickle at the moment, I've created a bit of code that creates 4 textboxes and adds them to a table layout at run time (code below) but I'm struggling with getting text from it, I tried getting the value from it as you would string s = TxtBox1.Text.ToString(); but it just gets a null reference, then I tried txt.Text.ToString();and this just gets the text from the last text box that was created.

   private void button2_Click(object sender, EventArgs e)
    {
        int counter;
        for (counter = 1; counter <= 4; counter++)
        {
            // Output counter every fifth iteration
            if (counter % 1 == 0)
            {
                AddNewTextBox();
            }
        }
    }

    public void AddNewTextBox()
    {
        txt = new TextBox();
        tableLayoutPanel1.Controls.Add(txt);
        txt.Name = "TxtBox" + this.cLeft.ToString();
        txt.Text = "TextBox " + this.cLeft.ToString();
        cLeft = cLeft + 1;
    }

I've looked all over for the answers to this and as of yet found nothing if anybody has any ideas I would be grateful.

Thanks


回答1:


this code picks textbox1 from tableLayoutPanel1, cast it from Control to TextBox and takes Text property:

string s = ((TextBox)tableLayoutPanel1.Controls["TxtBox1"]).Text;

if you need them all, then iterate over textboxes:

string[] t = new string[4];
for(int i=0; i<4; i++)
    t[i] = ((TextBox)tableLayoutPanel1.Controls["TxtBox"+(i+1).ToString()]).Text;



回答2:


You can try

    var asTexts = tableLayoutPanel1.Controls
            .OfType<TextBox>()
            .Where(control => control.Name.StartsWith("TxtBox"))
            .Select(control => control.Text);

That will enumerate the Text value for all child controls of tableLayoutPanel1 where their type is TextBox and their name starts with "TxtBox". You can optionally relax the filters removing the OfType line (that excludes any non TextBox control) or the Where line (that allow only the control which name matches your example).

Ensure to have

    Using System.Linq;

at the beginning of the file. Regards, Daniele.



来源:https://stackoverflow.com/questions/28276545/get-value-of-dynamically-created-textbox

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!