刷新列表框以显示新值

时间:2013-09-03 20:32:45

标签: c# winforms listbox

这是一个新问题,所以我很抱歉。

我正在填写我的文本框,其中的值是我在线抓取并将它们传递到列表框中,如下所示:

        // textBox1.Text = test.ToString();
        string[] names = result.Split('|');
        foreach (string name in names)
        {

            listBox1.Items.Add(name);
        }

但是我试图点击一个文件夹,并从那里显示的文件显示在我的listbox1中。这就是我尝试过的:

   using (var testy = new WebClient())
        {

            test = testy.DownloadString("http://server.foo.com/images/getDirectoryList.php?dir=test_folder");
            string[] names1 = test.Split('|');
            foreach (string name in names1)
            {
                listBox1.Items.Clear();
                listBox1.Items.Add(name);
                listBox1.Update();
            }

        }

但所有发生的事情都是我的列表框清空并且没有刷新。我怎样才能达到我想做的目的?

3 个答案:

答案 0 :(得分:1)

在您执行任何其他操作之前,请从foreach中删除clear和update

  listBox1.Items.Clear();
  foreach (string name in names1)
  {

     listBox1.Items.Add(name);

  }
  listBox1.Update();

答案 1 :(得分:0)

你的行

        foreach (string name in names1)
        {
            listBox1.Items.Clear();
            listBox1.Items.Add(name);
            listBox1.Update();
        }

使每个字符串都能删除列表中的其他项目。

我很确定这不是你想要的

答案 2 :(得分:0)

使用BindingSource

BindingSource bs = new BindingSource();
List<string> names1 = new List();
bs.DataSource = names1;
comboBox.DataSource = bs;

   using (var testy = new WebClient())
    {

        test = testy.DownloadString("http://server.foo.com/images/getDirectoryList.php?dir=test_folder");
        names1.AddRange(test.Split('|'));
        bs.ResetBindings(false);

    }

BindingSource将为您处理一切。