【问题标题】:Access / update textbox value after creating it on runtime在运行时创建后访问/更新文本框值
【发布时间】:2015-06-09 20:18:56
【问题描述】:

我在运行时创建了多个文本框。问题是我似乎无法在运行时渲染后单独更新它们的值。 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”。 帮助将不胜感激。谢谢。

【问题讨论】:

  • 你在 UI 线程上运行function() 吗?很可能不会,这意味着对控件的更改不会显示在屏幕上。
  • 尝试调试,看看它是否命中了您将文本设置为“世界”的行
  • 你在哪里声明paramdict
  • 您是否要在此行中添加对象的文本txtbx123dictionary.Add(i, paramtxtbx); 如果是,那么您需要添加paramtxtbx.Text 还有for (int i = 0; i &lt; ds.Tables[0].Rows.Count; i++) 的真正用途是什么看起来不像您将数据表中的值添加到字典对象..使用调试器查看您做错了什么...

标签: c# .net winforms visual-studio


【解决方案1】:

txtbx123dictionary.ElementAt(i)txtbx123dictionary[i] 不同

ElementAt(i)IEnumerable&lt;T&gt;的扩展方法

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    相关资源
    最近更新 更多