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