在运行时创建后访问/更新文本框值

时间:2015-06-09 20:18:56

标签: c# .net winforms visual-studio

我正在运行时创建多个文本框。问题是我似乎无法在运行时渲染后单独更新它们的值。 textbox.text总是最终在GUI中显示其初始文本(“Hello”)而不是我想要在更改它后显示的内容(“World”):

        public Dictionary<int,TextBox> txtbx123dictionary = new Dictionary<int,TextBox>

        public void LoadParameters()
        {
            DataSet ds = new DataSet();
            ds = GetParameters();
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    paramtxtbx = new System.Windows.Forms.TextBox();
                    txtbx123dictionary.Add(i, paramtxtbx);
                    txtbx123dictionary.ElementAt(i).Value.Text = "Hello"
                    txtbx123dictionary.ElementAt(i).Value.Name = "TextBox" + i.ToString();
                    txtbx123dictionary.ElementAt(i).Value.Location = new System.Drawing.Point(320, (i * 25));
                    txtbx123dictionary.ElementAt(i).Value.Size = new System.Drawing.Size(150, 20);
                    txtbx123dictionary.ElementAt(i).Value.Visible = true;
                    panel123.Controls.Add(paramdict.ElementAt(i).Value);
                    //panel123.Add(i, paramtxtbx);
                }
            }

            public void function()
            {
                LoadParameters();
                for (int i = 0; i < txtbx123dictionary.Count(); i++)
                {
                    txtbx123dictionary.ElementAt(i).Value.Text = "World";
                    txtbx123dictionary.ElementAt(i).Value.Update();
                    panel123.Update();
                }
            }

例如,我需要将textbox.text更改为“World”,但在运行代码时,文本框会一直显示“Hello”。 帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

txtbx123dictionary.ElementAt(i)txtbx123dictionary[i]

不同

ElementAt(i)是来自IEnumerable<T>

的扩展方法

您可以通过键TextBoxi添加到字典中,然后通过索引i尝试获取。