在visual c中的文本框中显示文本

时间:2011-10-17 17:14:58

标签: c# winforms

我从数组中获取信息并在表单上的文本框中显示结果。该值不会显示在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,但它不会显示在表单中。有人可以帮忙吗?

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也是从循环中连续获取值,但由于主线程已经忙,因此无法显示它。但在第二种情况下,线程与主线程分开。

我不确定这是你的问题,但对我来说似乎是这样。您将循环中的文本连续分配给文本框。即使文本框具有值,但也无法显示。如果您尝试创建新线程,现在文本框也将具有值,但现在可以在文本框中显示。它是一种伪代码,只是为了解释我的观点。如果你正在寻找相同的,那就好了。否则扔石头。

希望它有所帮助。