将大型数据集插入C#组合框

将大型数据集插入C#组合框,c#,xml,combobox,C#,Xml,Combobox,我正在尝试将一个10k行数据库XML导出加载到C#中的组合框中,但打开窗口的时间会花费很长时间,我确信10k行的处理量不会太大,但我仍然需要大约20秒才能完成最大化一个CPU线程。我尝试用C#创建一个新线程,但出现了一个跨线程错误。我有没有办法把加载时间缩短到1秒或2秒 public partial class AddGameWindow : Form { public AddGameWindow() { InitializeComponent();

我正在尝试将一个10k行数据库XML导出加载到C#中的组合框中,但打开窗口的时间会花费很长时间,我确信10k行的处理量不会太大,但我仍然需要大约20秒才能完成最大化一个CPU线程。我尝试用C#创建一个新线程,但出现了一个跨线程错误。我有没有办法把加载时间缩短到1秒或2秒

public partial class AddGameWindow : Form
{
    public AddGameWindow()
    {
        InitializeComponent();
        Application.UseWaitCursor = true;
    }

    private void AddGameWindow_Load(object sender, EventArgs e)
    {
        var doc = XDocument.Parse(Properties.Resources.GameDB);
        var rows = doc.Descendants("table").Select(el => new Game
        {
            Name = el.Element("title").Value,
            Url = el.Element("link").Value,
            Img = el.Element("imglink").Value
        });

        if (gamesList.Items.Count == 0 ) {
            // for some reason fires again when window closed :(
            int i = 0;
            foreach (var row in rows)
            {
                //nejak to tam nahazet at to dlouho netrva
                gamesList.Items.Insert(i, row.Name);
                i++;
            }
            Application.UseWaitCursor = false;
        }
    }
}
class Game
{
    public string Name;
    public string Url;
    public string Img;
}
如果要将大量项一次一个地推入基于列表的控件中,则需要利用这些项


但一定要注意评论中的建议;一个超过20个项目的组合是非常不可用的。查看“在此文本框中键入并将其用作过滤器”,可能带有“仅在用户键入3个字符后开始过滤”和“仅在延迟500毫秒后开始过滤,而不是在每次按键时过滤”类型行为。

下拉列表中的一万行是不好的UI。想办法缩小列表,也许可以先使用类别下拉列表。我正在尝试加载一个10k行。。。进入C#中的组合框-您似乎在错误的网站上发布了帖子。请立即访问ux.stackexchange.com,告诉他们您的计划。穿一些可燃性有限的衣服,或者可能。在组合框中装入10k行不是一个好主意。我是说,一点也不。例如,您可以加载100行,然后如果用户向下滚动,则再加载100行,以此类推。此外,您还可以使用异步方法加载不会阻塞您的UI的数据。任何用户都无法理解或能够在一个包含10000个选项的庞大、连续、未经筛选的列表中找到任何内容。那太可笑了。combobox不能很好地使用它的原因是,它没有针对如此大量的数据进行优化,因为它的设计者认为,没有人会愚蠢到在其中最多放置几十个项目。如果离截止日期还有几天的话,你就有足够的时间来弄清楚如何进行筛选或自动完成搜索,并制作出一个合理且实际可用的UI。