繁体   English   中英

将一个巨大的数据集插入 C# 组合框

[英]Inserting a huge dataset into C# combo box

我正在尝试加载一个 10k 行数据库 XML 导出到 C# 的组合框中,但是打开 window 的时间需要很长时间,而且我确信它仍然需要花费我很多时间来处理,我确信它仍然需要花费很多时间来处理我的 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;
}

如果您一次将大量项目推送到基于列表的控件中,则需要利用BeginUpdate/EndUpdate

请注意评论中的建议; 大约 20 多个项目的组合非常无法使用。 查看“在此文本框中输入并将其用作过滤器”,可能是“仅在用户键入 3 个字符后开始过滤”和“仅在延迟 500 毫秒后才开始过滤,而不是在每次按键时过滤”类型行为。 .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM