0

我正在将项目(字符串)加载到单独线程中的组合框中。加载完成后,组合似乎是空的。但是,如果我开始在其中输入现有项目的名称,然后点击向下或向上箭头,它会自动完成我的项目,然后我突然看到我的所有项目都在组合中。我究竟做错了什么?注意:myItem 只是我们使用名为 Name 的公共属性创建的类,getItems 返回这些项目的数组。

    void cmb_GotFocus(object sender, System.EventArgs e)
    {
        if (cmb.Items.Count == 0)
        {
            Thread thread = new Thread(new ThreadStart(GetItems));
            thread.Start();
        }
    }

    private void GetItems()
    {
        try
        {
            this.Invoke(new Action(() => cmb.Items.Clear()));

            myItem[] items = Library.GetItems();
            if (items != null && items.Length > 0)
            {
                foreach (myItem item in items)
                {
                    this.Invoke(new Action(() => cmb.Items.Add(item.name)));
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Could not get items.\nError: " + ex.Message);
        }
    }
4

0 回答 0