показать текст в текстовом поле в визуальном C # - PullRequest
0 голосов
/ 17 октября 2011

Я получаю информацию из массива и отображаю результаты в текстовом поле на форме.Значение не отображается в пользовательском интерфейсе, но оно говорит, что ему присвоено значение.

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 Ответ

2 голосов
/ 18 октября 2011

Попробуйте это ...

    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();
        }
    }

Этот код должен работать так, как вы ожидаете.

В первом случае текстовое поле также непрерывно получает значения из цикла, но не может отобразить его, так как основной поток уже занят. Но во втором случае поток отделен от основного потока.

Я не уверен, что это ваша проблема, но мне так кажется. Вы назначаете текст текстовым полям непрерывно в цикле. Таким образом, хотя текстовые поля имеют значения, но не способны отображать. Если вы попытаетесь создать новый поток, теперь также текстовые поля будут иметь значения, но теперь будут видны в текстовых полях. Это своего рода псевдокод, просто чтобы объяснить мою точку зрения. Если вы ищете то же самое, все в порядке. иначе брось камень в мою голову.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...