刷新列表框以显示新值

本文关键字:显示 新值 列表 刷新 | 更新日期: 2023-09-27 18:30:01

这是一个新手问题,很抱歉。

我正在用值填充我的文本框,我在网上抓取并将它们传递到列表框,如下所示:

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

然而,我正试图点击一个文件夹,并将其中显示的文件显示在我的列表框1中。这就是我尝试过的:

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

但所发生的一切都是我的列表框清空了,没有得到刷新。我怎样才能实现我想要做的事情?

刷新列表框以显示新值

在执行其他操作之前,从foreach 中删除清除和更新

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

您的线路

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

使得对于每个字符串,您都要删除列表中的任何其他项。

我很确定这不是你想要的

使用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将为您处理所有事务。