как сделать мое приложение таким же быстрым, как проводник Windows для рендеринга файлов

У меня есть папка с большим количеством файлов внутри. Я хочу иметь возможность отображать каждый из моих файлов как кнопку. И когда я нажимаю на кнопку, что-то произойдет.

 private void Form1_Load(object sender, EventArgs e)
    {
        int x = 10; 
        int y = 10;

        /// Process the list of files found in the directory.
        string[] fileEntries = Directory.GetFiles(@"c:\lotsofDocs");
        foreach (string fileName in fileEntries)
        {
            // do something with fileName
            Button newbotton = new Button();
            newbotton.AutoSize = true;
            newbotton.Text = fileName;
            panel1.Controls.Add(newbotton);
            newbotton.Location = new Point(x, y);
            x += 150;
            if (x == 760)
            {
                y += 50;
                x = 10;
            }
        }

Как видите, в коде нет ничего сумасшедшего. У меня есть панель формы, и я установил автоматическую прокрутку на панели на true и автоматический размер на false. Это заставляет форму сохранять размер, а кнопки ( некоторые из них в любом случае), чтобы их отобразить вне формы, и я могу прокрутить до них.

Пока все хорошо.

Если у меня есть 100 или 200 файлов, все в порядке, если у меня 1932 файла, потребуется около 10 секунд, чтобы отобразить все кнопки.

Я прочитал следующий вопрос Сверхмедленный пользовательский элемент управления C # , и я понимаю, что подход " m использование может быть не лучшим вариантом для использования здесь.

И вот наконец вопрос: как проводник Windows справляется с этим? Если я открою эту папку в проводнике Windows, она откроется мгновенно. Какой тип управления использует проводник Windows? Или он делает это совершенно иначе, чем я.

Спасибо

5
задан Community 23 May 2017 в 11:44
поделиться