【发布时间】: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 < ds.Tables[0].Rows.Count; i++)的真正用途是什么看起来不像您将数据表中的值添加到字典对象..使用调试器查看您做错了什么...
标签: c# .net winforms visual-studio