我从数组中获取信息并在表单上的文本框中显示结果。该值不会显示在UI中,但会显示已分配值。
try
{
foreach (string r in Rows)
{
string[] h = new string[5];
h = r.Split(',');
MessageBox.Show(h[0]);
// need to show the first record
House newhouse = new House();
newhouse.ID = Convert.ToInt32(h[0]);
newhouse.Address = Convert.ToString(h[1]);
newhouse.Type = Convert.ToChar(h[2]);
newhouse.Cost = Convert.ToInt32(h[3]);
newhouse.Sold = Convert.ToString(h[4]);
loadedHouses.Add(newhouse);
ID_Number.Text = Convert.ToString(h[0]);
address1.Text = Convert.ToString("g");
type1.Text = Convert.ToString(h[2]);
cost1.Text = Convert.ToString(h[3]);
sold1.Text = Convert.ToString(h[4]);
MessageBox.Show("dewdwedw");
}
}
catch (Exception qq)
{
Console.WriteLine("{0} Exception caught.", qq);
}
当您在调试时将鼠标悬停在ID_Number
上时,它表示该值应为1,但它不会显示在表单中。有人可以帮忙吗?
答案 0 :(得分:2)
试试这个......
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 100000; i++)
{
textBox1.Text = i.ToString();
}
}
人们可以猜到这里发生了什么。文本框中的数字将显示0到999之间的文本。对吗?错了......在循环结束时,输出将只有999。
我不是专家,我正在努力学习C#。但我知道这段代码会像我说的那样工作。可能你必须在一个单独的线程中完成它。试试这个......
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(loop));
t.Start();
}
private void loop()
{
for (int i = 0; i < 100000; i++)
{
textBox1.Text = i.ToString();
}
}
此代码应该按照您的预期工作。
在第一种情况下,textbox也是从循环中连续获取值,但由于主线程已经忙,因此无法显示它。但在第二种情况下,线程与主线程分开。
我不确定这是你的问题,但对我来说似乎是这样。您将循环中的文本连续分配给文本框。即使文本框具有值,但也无法显示。如果您尝试创建新线程,现在文本框也将具有值,但现在可以在文本框中显示。它是一种伪代码,只是为了解释我的观点。如果你正在寻找相同的,那就好了。否则扔石头。
希望它有所帮助。